Речевой инвертор (voice inversion) на tiny13

Всё что связано с аппаратурой и антеннами
Ответить
  • Автор
  • Сообщение
Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Речевой инвертор (voice inversion) на tiny13

Сообщение EU6SM »

Необходимо сделать скремблер (метод частотной инверсии) для встраивания в трансивер по предложенной схеме, достаточно встраивания только в приёмную часть (схема ниже).

Звуковой сигнал трансивера снимается до регулятора громкости и подаётся на вывод "AU IN". В зависимости от режима DD1, сигнал проходит через инвертор спектра(дескремблер активен) или пропускается без преобразования (режим bypass); режим выбирается с помощью кнопки на энкодере BS1 и запоминается в энергонезависимой памяти контроллера. Индикация режима производится подачей одного бипа при активации скремблера и двух бипов при дезактивации по нажатию кнопки BS1.
При повороте энкодера при активном скремблере производится увеличение или уменьшение частоты инвертирования. При достижении минимального значения частоты (950Гц), подаётся длинный бип низкого тона; при достижении максимального значения частоты (4500Гц), подаётся длинный бип высокого тона. При повороте ручки энкодера должен подаваться звуковой сигнал из одного короткого бипа при достижении частоты 1КГц, 2х коротких бипов при достижении частоты 2КГц, 3х коротких бипов при достижении частоты 3КГц, 4х коротких бипов при достижении частоты 4КГц. Частота инвертирования сохраняется в энергонезависимой памяти. При неактивном скремблере поворот ручки энкодера игнорируется. Вывод "SQL" запрещает/разрешает прохождение звукового сигнала на вывод "AU OUT". При активном скремблировании, выходной звуковой сигнал проходит фильтр нижних частот 1го порядка.

Реальная схема или фейк? :-):
Вложения
Речевой инвертор (voice inverter) на tiny13A
Речевой инвертор (voice inverter) на tiny13A

Не в сети
Аватара пользователя
Сообщения: 528
Зарегистрирован: 11 июл 2012 19:09
Откуда: Витебск
Контактная информация:

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение ew6ba »

del
Последний раз редактировалось ew6ba 04 май 2016 13:24, всего редактировалось 1 раз.
_________________
73!!! Виталий (EW6D ex EW6BA)

Не в сети
Сообщения: 120
Зарегистрирован: 03 ноя 2011 05:54
Контактная информация:

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение raxp »

и от значения или прибавляется или отнимается значение
разбежался )
Реальная схема или фейк?
схема - не алгоритм. Данная схема ничего не делает без прошивки. Впрочем нет, ток она жрет )
Вот, если бы корректнее сам вопрос звучал: "Хватит ли вычислительной мощности и памяти тиньки для оцифровки, свертки и ШИМ-а (для последующего восстановления сигнала через ФНЧ) в реальном времени для аудиопотока", - другое совсем дело. Хватит.

Все тоже самое можно и аналоговым методом на 561КТ3 по классической схеме (шифровал так магнитофонные записи в свое время :)):
Изображение

Есть вообще примитив:
Изображение

Если автономность некритична, то нонче есть программные realtime частотные скремблеры. Утилитку от programmist-а на радиосканере скачать можете. С исходниками, на Delphi. На вход аудиокарты с трансивера, далее VAC и слушаем восстановленный после инверсии FFT с возможностью перестройки частоты, относительно которой идет инверсия.
_________________
Белорусский журнал «Радиолюбитель»
UR3QQJ https://qrz.com/db/UR3QQJ

Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU6SM »

raxp писал(а):
EW8SA писал(а):и от значения или прибавляется или отнимается значение
разбежался )
Поддерживаю, что кто-то"разбежался" :-): Интересно, при обработке звука есть хоть одно преобразование, основанное только на сложении...
raxp писал(а):Вот, если бы корректнее сам вопрос звучал: "Хватит ли вычислительной мощности и памяти тиньки для оцифровки, свертки и ШИМ-а (для последующего восстановления сигнала через ФНЧ) в реальном времени для аудиопотока", - другое совсем дело. Хватит.
Откуда такая уверенность, что хватит? :-): Времени ~800мкс между сэмплами, такт 0.1мкс. За 800 тактов точно справитесь, прямо-таки уверены (умножения и деления нет, и тактов в риале значительно менее 800)? И про свёртку несколько перегнули, не кажется? Корректнее было бы назвать метод при котором "хватит", коль скоро речь идёт о корректности :mi_ga_et:
raxp писал(а):Все тоже самое можно и аналоговым методом на 561КТ3 по классической схеме (шифровал так магнитофонные записи в свое время :)):
Кстати, о корректности: приведённые схемы надо было выбросить и забыть 20 лет назад, на кой чёрт Вы их извлекли из сундука, если разбираетесь в вопросе настолько, что в состоянии дать уверенный и компетентный комент с учётом явно непростого решения задачи для tiny13? Перемножитель на КТ3 раньше делали от бедности, вообще-то...
raxp писал(а):Если автономность некритична...
Речь идёт о решении "шахматной партии", а не декодировании любой ценой, вроде бы это очевидно. Решение интересно именно в контексте минималистики.
raxp писал(а): ... С исходниками, на Delphi...
Исходники? Если не сложно, чиркните ссылку на исходники programmist'а...
raxp писал(а):... после инверсии FFT с возможностью перестройки частоты ...
А там точно FFT? Вы вот точно уверены, что свёртку S(x) и обратную свёртку S*(x) софтина проводит в реальном времени?

Не в сети
Аватара пользователя
Сообщения: 393
Зарегистрирован: 05 ноя 2013 00:55

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU3EU »

Есть простейший метод дескремблинга в реалтайме: каждый сэмпл входного сигнала умножать на +1, -1, +1, -1 и т.д. (то есть, каждый второй сэмпл проинвертировать), и сразу подавать на ЦАП с RC фильтром на выходе. Некоторые искажения присутствуют, но, тем не менее, вполне неплохо получается, если частота дискретизации подобрана точно. Tiny справится запросто.

Не в сети
Аватара пользователя
Сообщения: 393
Зарегистрирован: 05 ноя 2013 00:55

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU3EU »

Вот, прикинул по-быстрому в питоне с numpy. Взял три несущих, сделал FFT. Каждый второй отсчет исходного сигнала проинвертировал, после FFT спектр - точная инверсия исходного спектра.
descrambl.png
descrambl.png (31.45 КБ) 18428 просмотров

Не в сети
Аватара пользователя
Сообщения: 359
Зарегистрирован: 25 окт 2013 14:37
Откуда: Кобрин

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EW3MM »

EU3EU писал(а):Есть простейший метод дескремблинга в реалтайме: каждый сэмпл входного сигнала умножать на +1, -1, +1, -1 и т.д. (то есть, каждый второй сэмпл проинвертировать), и сразу подавать на ЦАП с RC фильтром на выходе.
Восемь лет назад занимался подобной ерундой. Правда, на МК не экономил.
Получилось довольно неплохо. Потоковый RAW (8 bit / 11 kHz) заливается в AT45DB041B.
На слух играет очень чисто. Других исследований не проводил.
Алгоритм - некое подобие суперсэмплинга (по коду все ясно и довольно примитивно).
Схема и исходник для MSP430F149.
Вложения
speech.jpg
main.rar
(2.23 КБ) 599 скачиваний
_________________
ex call EW3ABW

Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU6SM »

В пред.моём посте есть "очепятка": "... Времени ~800мкс между сэмплами ...", должно быть 80мкс.
EW8SA писал(а): ... FFT доверяю и использую только на телефоне или на компе. Мучаться с контроллером для этих задач некий вид содомазо! :ps_ih:
Да, нормально всё :-): Просто для кого-то Евангелие набор еврейских сказок, для кого шахматы - это резьба по дереву, для Вас контроллер - садомазо: никто ж не навязывается, кому нравится поп, кому попадья, а кому попова дочка :mi_ga_et:
EU3EU писал(а): Есть простейший метод дескремблинга в реалтайме: каждый сэмпл входного сигнала умножать на +1, -1, +1, -1 и т.д. (то есть, каждый второй сэмпл проинвертировать), и сразу подавать на ЦАП с RC фильтром на выходе.
Верно, есть такой способ, но в риале он плохо работает, т.к. инвертируется весь спектр и частота дискретизации (вспоминаем Котельникова/Найквиста) должна совпадать с шириной полосы сигнала: уже прикидываете качество при частоте инверсии 2500? :-): К тому же спектр инвертируется относительно нулевой частоты: разборчивость выходного сигнала конечно повысится, но ухо придётся потренировать. Впрочем, как вариант решения, действительно подходит - благодарность!
EW3MM писал(а): ...Восемь лет назад занимался подобной ерундой. Правда, на МК не экономил.
Получилось довольно неплохо. Потоковый RAW (8 bit / 11 kHz) заливается в AT45DB041B. ...
Это ж безыдейно... На спец.микросхеме со звуковым буфером "сляпить" диктофон - это ж вообще не задача... На обычной 25Pxx попробуйте сделать, вот это интересная задача :-): Ну, и к решению всё написанное как бы не относится: в данном случае ресэмплинг не поможет, т.к. чтобы избежать артефактов преобразования, которые нивелируют эффект ресэмплинга, придётся применить ещё более сложное преобразование, чем требовалось бы изначально.

Не в сети
Аватара пользователя
Сообщения: 359
Зарегистрирован: 25 окт 2013 14:37
Откуда: Кобрин

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EW3MM »

EU6SM писал(а):На спец.микросхеме
Какая еще спец.микросхема ??? :-)
Обычный МК (MSP430F149), десяток лет назад считавшийся довольно шустрым и флэшка (AT45DB041), отличающаяся от ширпотреба высокой скоростью чтения.
Все реализовано программно в реалтайме без буферизации. Код посмотрите - станет ясно.
_________________
ex call EW3ABW

Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU6SM »

EW3MM писал(а):Какая еще спец.микросхема ??? :-)
Обычный МК (MSP430F149), десяток лет назад считавшийся довольно шустрым и флэшка (AT45DB041), отличающаяся от ширпотреба высокой скоростью чтения.
Все реализовано программно в реалтайме без буферизации. Код посмотрите - станет ясно.
Ну, зачем писать ахинею, если Вы не разбираетесь в вопросе... Посмотрите свой код сами, а то читатель явно понимает больше автора кода :-):

Вот кто-нибудь прочтёт Ваше эссе и решит, что написанное верно, а это не так... Посмотрите в даташит AT45DB041: это специальная ИМС с двойной буферизацией для реализации непрерывной записи. Это чуть ли не единственная серия ИМС в своём роде; откройте глаза и не вводите никого в заблуждение: ИМС медленная, как паровоз Черепанова (14мс(!!!) на страницу), кроме этой чёртовой буферизации в AT45DB041 нет никаких достоинств.

В жизни не так много времени, чтобы тратить её на проверку чужих бредней: знания должны быть достоверными, чтобы их запомнить и пользоваться.

Не в сети
Сообщения: 120
Зарегистрирован: 03 ноя 2011 05:54
Контактная информация:

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение raxp »

EU6SM писал(а):Откуда такая уверенность, что хватит? :-): Времени ~800мкс между сэмплами, такт 0.1мкс. За 800 тактов точно справитесь, прямо-таки уверены (умножения и деления нет, и тактов в риале значительно менее 800)? И про свёртку несколько перегнули, не кажется? Корректнее было бы назвать метод при котором "хватит", коль скоро речь идёт о корректности
просто делал на тиньке анализатор спектра и так уж вышло, что ЦОС моя работа )
EU6SM писал(а):Кстати, о корректности: приведённые схемы надо было выбросить и забыть 20 лет назад, на кой чёрт Вы их извлекли из сундука, если разбираетесь в вопросе настолько, что в состоянии дать уверенный и компетентный коммент с учётом явно непростого решения задачи для tiny13?
оно и делалось 20 лет назад. Могу и фото рабочих экземпляров показать )

Изображение
Изображение
Изображение
Изображение
EU6SM писал(а):Перемножитель на КТ3 раньше делали от бедности, вообще-то...
распространенный стереотип среди современных электронщиков - все, что требует больше двух деталек пихать в МК. А ведь достаточно примитивной аналоговой схемы, не требующей программатора.
EU6SM писал(а):Речь идёт о решении "шахматной партии", а не декодировании любой ценой, вроде бы это очевидно. Решение интересно именно в контексте минималистики.
об чем вы, бро? ;;-))) Решения как такового нет, "схема" на МК - лишь кусок тупого пластика и кремния, которое пока ничего не делает. Если есть алгоритм, плиз его в тему, будет предметное обсуждение.
EU6SM писал(а):Исходники? Если не сложно, чиркните ссылку на исходники programmist
...
А там точно FFT?
странно, что никто тут не знает про файловый архив данного ресурса. Нет, в той ранней версии точно не FFT, простое перемножение каждого второго отсчета (кстати, ниже) как тут уже написали. Но позже появилась версия с переворотом спектра через Фурье.

Обсуждение http://www.radioscanner.ru/forum/topic14758.html
Сам частотный инвертор в 12 году был по ссылке http://www.radioscanner.ru/files/downlo ... vertor.rar, сейчас переместили, куда, не в курсе. Искать мне лень, поэтому то, что сохранилось с прямой работой с PCM:

Код: Выделить всё

var
   i,j,k,FSize              : Longint;
   fn,ext                   : string;
   SrcFile, DestFile        : File;
   BytesRead, BytesWritten  : Longint;
   Buffer16                 : array [0..BufferLength*2] of Byte;
   AudioArray16             : array [0..BufferLength]   of SmallInt; //-32768..32767
   waveheader               : TWaveHeader;
   dataheader               : TDataHeader;
   Channels                 : SmallInt;
begin
     Label1.Caption:=    '';
     LabelCh.Caption:=   '';
     LabelFrq.Caption:=  '';

   if OpenDialog1.Execute then fn:= OpenDialog1.filename;
   if fn = '' then exit;

   //декодировка MP3-
   ext:= lowercase(ExtractFileExt(fn));
   if ext='.mp3' then begin
    shellexecute(0,
                 'open',
                 'lame\lame.exe',
                 pchar('--decode '+ fn),
                 pchar(extractfilepath(application.ExeName)),
                 SW_HIDE);
                 
    application.ProcessMessages;
    i:= GetTickCount; while gettickcount-i<2000 do;
    fn:= extractfilepath(fn) + extractfilename(fn)+'.wav'
   end;
   fnn:= MainDir + '\Inverted_' + ExtractFileName(fn);



     AssignFile(SrcFile, fn);
     AssignFile(DestFile, fnn);
     Reset(SrcFile, 1);
     try
        Rewrite(DestFile, 1);
        BlockRead(SrcFile, waveheader,  sizeof(twaveheader), BytesRead);
        with waveheader do
        begin
             if idriff   <> 'RIFF' then raise ereaderror.create('wrong idriff');
             if idwave   <> 'WAVE' then raise ereaderror.create('wrong idwave');
             if idfmt    <> 'fmt ' then raise ereaderror.create('wrong idfmt');
             if wavetype <> 1      then raise ereaderror.create('unknown format');
             if bits     <> 16     then raise ereaderror.create('wrong format');
             LabelCh.Caption:=     'Каналы  : ' + IntToStr(ch);
             LabelFrq.Caption:=    'Дискрет : ' + IntToStr(freq);
             Channels:= ch;
        end;
        BlockWrite(DestFile, waveheader,  sizeof(twaveheader), BytesWritten);
        BlockRead(SrcFile, dataheader, sizeof(tdataheader), BytesRead);
        BlockWrite(DestFile, dataheader, sizeof(tdataheader), BytesWritten);
        try
           SBOpen.Enabled:= False;
           try
              FSize := FileSize(SrcFile);
              prbCopy.Max:= FSize;
              repeat
                    BlockRead(SrcFile, Buffer16, BufferLength*2, BytesRead);
                    if BytesRead > 0 then
                    begin
                         CopyMemory(@AudioArray16, @Buffer16, BytesRead);
                         j:=0; k:=0;
                         for i := 0 to BytesRead div 2 do
                         begin
                              if Channels = 1 then if i and 1 = 0 then AudioArray16[i]:= -AudioArray16[i];
                              if Channels = 2 then
                              begin
                                   if i and 1 = 0 then
                                   begin
                                        if j and 1 = 0 then AudioArray16[i]:= -AudioArray16[i];
                                        Inc(j);
                                   end else
                                   begin
                                        if k and 1 = 0 then AudioArray16[i]:= -AudioArray16[i];
                                        Inc(k);
                                   end;
                              end;
                         end;
                         CopyMemory(@Buffer16, @AudioArray16, BytesRead);
                         Application.ProcessMessages;
                         BlockWrite(DestFile, Buffer16, BytesRead, BytesWritten);
                         if BytesRead <> BytesWritten then
                         raise Exception.Create('Error copying file')
                         else prbCopy.Position := prbCopy.Position + BytesWritten;
                    end
              until BytesRead = 0;
           except
           Erase(DestFile);
        raise;
      end;
      finally
             CloseFile(DestFile);
             prbCopy.Position:=0;
      end;
      finally
             CloseFile(SrcFile);
             SBOpen.Enabled:= True;
      end;
      Label1.Caption:=    'Готово.';
end;
Сей код (вся суть которого сводится к одной строчке " for i := 0 to BytesRead div 2 do
if i and 1 = 0 then AudioArray16:= -AudioArray16;") не требователен к ресурсам и вполне может работать реалтайм.

Берем кусок речи:
Изображение

Вот что делает данный код после преобразования:
Изображение

Теперь сформируем тестовый 400 Гц тон:
Изображение

После инверсии:
Изображение

Исходники проекта данного инвертора оффтайм: https://yadi.sk/d/jAuJf75JrYfEe
Еще одна оффтайм-утилита https://yadi.sk/d/0vN0dqghrYfJz

EU6SM писал(а): софтина проводит в реальном времени?
следующая софтина - Voice Descrambler, да, realtime https://yadi.sk/d/RkmNGsfXrYfN3

Всех с днем Радио )
_________________
Белорусский журнал «Радиолюбитель»
UR3QQJ https://qrz.com/db/UR3QQJ

Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU6SM »

raxp писал(а): ... просто делал на тиньке анализатор спектра и так уж вышло, что ЦОС моя работа )
Да, смотрел Ваш сайт: впечатляет масштаб.
raxp писал(а):...оно и делалось 20 лет назад...
Сейчас как-то диковато смотрится :-):
raxp писал(а):... распространенный стереотип ... все, что требует больше двух деталек пихать в МК ...
Ну, в масс-продакшене на четыре кости легко ставят за 1 цент разницы, Вам это не знакомо? Так-что это правильное и очень объяснимое желание :-):
raxp писал(а): ... Решения как такового нет ...
Вы подменяете понятия, нехорошо это. Решение не предлагалось, а спрашивалось. Более того, Вы сами топчетесь вокруг да около, не предложив ничего конкретного, при этом сокрушаясь на что-то... Демагогия? На что сокрушаетесь-то? :-): Вон EU3EU единственный предложил возможный способ решения по делу - молодец, хотя способ не очень.
raxp писал(а): странно, что никто тут не знает про файловый архив...
Знаем, но исходников там нет, т.е. как бы был отсыл "для красного словца"? С таким же успехом можно сослаться на google :-): Ради справедливости, надо отметить, что Вы попытались поправить положение.
raxp писал(а):... Искать мне лень, ... Исходники проекта данного инвертора оффтайм ...
Это "опа", а не исходники: инверсия полного(!) спектра через нулевую частоту, EU3EU уже предлагал.
raxp писал(а):... софтина проводит в реальном времени?
Ох, такое чувство, что Вы слушаете только себя: на кой сдались эти утилиты??? Я не понимаю, зачем Вы в каждом посте на них ссылаетесь? Вы понимаете о чём идёт речь или нарочно зарядили одно и тоже повторять? Есть 512 слов и 64 байта памяти - и всё. Если знаете как сляпить свёртку и обратную, чтоб отсчётов было не 2, а поболей - говорите, а не дурите череп :-):

P.S. Задача решена методом перемножения частот инвертирования и исходного сигнала: по-идее любой радиолюбитель должен помнить, что при гетеродинировании спектр инвертируется; да и глядя на схемы из сундука это как бы очевидно, странно, что никто не озвучил.

Не в сети
Сообщения: 120
Зарегистрирован: 03 ноя 2011 05:54
Контактная информация:

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение raxp »

Ну, в масс-продакшене на четыре кости легко ставят за 1 цент разницы, Вам это не знакомо? Так-что это правильное и очень объяснимое желание :-):
не подменяйте понятия, какой тут масс-продакш? Нет его.
Вы подменяете понятия, нехорошо это. Решение не предлагалось, а спрашивалось.
Вот цитата из первого поста, что именно спрашивалось топик-стартером, т.е. вами: "Реальная схема или фейк?". Так кто тут понятия подменяет? )
Более того, Вы сами топчетесь вокруг да около, не предложив ничего конкретного, при этом сокрушаясь на что-то... Демагогия? На что сокрушаетесь-то? :-): Вон EU3EU единственный предложил возможный способ решения по делу - молодец, хотя способ не очень.
начнем с того, что прокрутите посты вверх по дате-времени, мой отсыл к исходникам ранее содержит как раз предложенный позже EU3EU способ )
Мало того, напомнил и о классическом схемотехническом реальном решении.
Это "опа", а не исходники: инверсия полного(!) спектра через нулевую частоту, EU3EU уже предлагал.
предлагал позже. И потом тут положение инвертированного спектра определяется частотой дискретизации, меняем ее и полоса с другим частотным сдвигом тем же методом )
Ох, такое чувство, что Вы слушаете только себя: на кой сдались эти утилиты??? Я не понимаю, зачем Вы в каждом посте на них ссылаетесь? Вы понимаете о чём идёт речь или нарочно зарядили одно и тоже повторять? Есть 512 слов и 64 байта памяти - и всё. Если знаете как сляпить свёртку и обратную, чтоб отсчётов было не 2, а поболей - говорите, а не дурите череп :-):
не охайте как бабка старая, такое чувство, что вы слушаете только себя. Перечитайте еще раз мой пост внимательнее, а не между строк, вклинивая свои больные фантазии. Ремарка про утилиты была: "Если автономность некритична, то нонче есть программные realtime частотные скремблеры". Не нравится - не пользуйтесь )
_________________
Белорусский журнал «Радиолюбитель»
UR3QQJ https://qrz.com/db/UR3QQJ

Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU6SM »

raxp, Ну, Вы ж понимаете, что далее с Вами бессмысленно переписываться: толку не было, а теперь и не будет, и каждый останется при своём мнении. Тем более, что работа завершена :-):

Не в сети
Аватара пользователя
Сообщения: 576
Зарегистрирован: 24 май 2017 18:28
Откуда: Жлобин
Контактная информация:

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение Ferrum1827 »

EU6SM писал(а):Тем более, что работа завершена :-):
Можно поподробнее ?
Проект ТС (сабж темы) "Речевой инвертор (voice inversion) на tiny13" реализован ?
_________________
Изображение

Не в сети
Аватара пользователя
Сообщения: 73
Зарегистрирован: 15 дек 2013 15:54

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение EU6SM »

Ferrum1827 писал(а):Проект ТС (сабж темы) "Речевой инвертор (voice inversion) на tiny13" реализован ?
Да, конечно. Описание, прошивка, видео по ссылке: http://anyram.net/blog_ru/?p=512

Не в сети
Аватара пользователя
Сообщения: 576
Зарегистрирован: 24 май 2017 18:28
Откуда: Жлобин
Контактная информация:

Re: Речевой инвертор (voice inversion) на tiny13

Сообщение Ferrum1827 »

:co_ol: :co_ol:
_________________
Изображение
Ответить