Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [113]
Наш опрос
Оцените мой сайт
Всего ответов: 1160
Главная » Статьи » Мои статьи

Синтезатор речи RC2 на AVR (говорилка)
На основе примера AN #165 - RC2 sound / Voice playback от полного безделья создан фонемный синтезатор речи - говорилка. (От администрации сайта: Очень хороший способ заполнить безделье. Лентяи, берите на вооружение!) 



Это не конструкция для повторения, а тема для длительной и кропотливой работы. (От администрации сайта: а мы повторили как есть - говорит говорилка! Она позволяет через терминал отправлять целые фразы!). Понимает только русские строчные буквы, можно слушать через наушники, но наилучшие результаты получаются при подключении только басовой колонки. 



Сначала я схватил микрофон и пробовал диктовать туда фонемы но, увы, в результате получаются одни шумы. Короче, нужен отличный студийный звук. В сети нашел аудио книгу  "Культура речи - как правильно и грамотно говорить по-русски ". Читает женщина с красивым чистым голосом. В дальнейшем я обнаружил искажения, на которые не обратил внимания в начале работы. Видимо, нужно поискать запись лучшего качества. Фонемы выделялись с помощью Sound Forge Pro 10.0 (русская версия), есть в интернете.

Открываем mp3 файл и приводим его к нужным нам значениям.
Моно - ОБЯЗАТЕЛЬНО.
Частота опроса – 15625. В этом случае самые длинные фонемы помещаются в 256 байт.  Для установки частоты опроса 15625 нужно в меню "обработка \ ресемплирование \ ресемплирование" установить "Новая частота опроса 15625". Ставим флажок на "Фильтровать для восстановления формы сигнала". Точность интерполяции - 2. В результате получаем в меню "вид \ свойства файла \ тип файла" -Wave(microsoft). Формат аудио Uncompressed (ОБЯЗАТЕЛЬНО). Частота опроса аудио - 15 625 Гц. Число бит аудио - 8 бит. Каналы аудио - 1(Моно)(ОБЯЗАТЕЛЬНО моно). 

Дальше все долго, но зато очень просто. Мышкой выделяем нужный фрагмент, копируем и вставляем в новое окно. Удаляем, вырезаем, копируем и т.д. и т.д., достигая приемлемого размера. Полезно проверить результат, составив слово из имеющихся фонем.  Полученный mp2 файл загружаем в RC_Coder. (Вся теория тут:  AN #165 - RC2 sound / Voice playback). Ни каких установок я там не менял, а просто создавал одноименный *.bin файл. Затем при помощи BasComData.exe получаем файл с расширением *.ddd. Это утилита для преобразования бинарных файлов в код программы типа DATA. Содержимое копируем в исходный код программы BASCOM AVR. При помощи специально написанного терминала, понимающего по-русски, можно в контроллер отправлять целые фразы. Если устройство не подключено к терминалу, то ножку RX нужно подсоединить через 10к к +5в, иначе контроллер зависнет.

Фонемы "М" и "К" у меня совсем не получились, если увеличить скорость опроса в два, а лучше в три раза, результат будет совсем другой. Можно попробовать "трудные”  фонемы создавать и воспроизводить на большей скорости, чем остальные (места должно хватить). Если эта тема получит продолжение, то нужно обязательно определить единые источники и терминологию.



На любые вопросы с охотой отвечу.

С уважением, Вадим Муравьёв.

От администрации сайта: тема безусловно интересная и полезная. Открывает огромные перспективы - с помощью недорогого широко распространённого контроллера синтезировать человеческий голос. 
Сфера применения очень широка - от детских игрушек до голосовых информеров, голосовых меню, и т.д. Всех заинтересованных, повторивших или модернизировавших конструкцию - просьба писать сюда.
Что можно добавить уже сейчас - активный фильтр, настроенный на полосу пропускания человеческого голоса, например такой. Тогда можно будет использовать любую акустику. Можно и нужно добавить электронный регулятор громкости в самой Меге, на том же полевом транзисторе и матрице резисторов в затворе(примитивный ЦАП). Уровень громкости сделать параметром в терминале.


Продолжение.
В процессе работы обратил внимание, что после сброса, при попытке заслать новые данные, не всегда это получается. Оказывается, нужно читать AN_#183_RUS.
Высылаю новую версию. Добавил букву Ё. 
Теперь об усилителе. 
Собрал на LM386 с режимом Amplifier with Bass Boost.  



Получились следующие характеристики на частоте:
  • 200 Гц - затухание в 2раза
  • 800 Гц - затухание в 4 раза
  • 2000 Гц - затухание в 10  раз

Продолжение продолжения или новый способ сжатия WAV + PWM.

Устройство WAV файла в журнале РАДИО № 4 2001 стр. 25.
Программа практически та же. Способ сжатия WAV иной.
Берется фонема из неё вырезается одна или несколько синусоид (звуков) или кусков для шипящих.
Помещается в новый WAV файл (для удобства спереди и сзади добавляем по кусочку тишины в бинарном виде &H80).
Открывается WinHex.exe (я пользовался русской версией), выделяется блок, и копируется в новый файл (присваиваем расширение bin).
Повторяя и соединяя звуки, получаем фонему. Применены разные скорости. Обратите внимание, что пины первой и второй конструкции не совпадают!


Появилась печатная плата первой версии говорилки.
Для второй версии необходимо подключить другой пин (сверяйтесь по исходникам!). На плате дополнительно установлен светодиод - индикатор питания, а также кнопка - для возможной модернизации программы (ручного теста).





Категория: Мои статьи | Добавил: bascom (17.02.2013) | Автор: Radan
Просмотров: 7414 | Комментарии: 19
Всего комментариев: 191 2 »
19  
Если чего, кому интересно. Программа для генерации блока DATA из WAV файлов (и не только), скомпилирована, угощайтесь: https://yadi.sk/d/ZV-DHldijGAqz
Автору огромное спасибо!!!! Выручил!!!

18  
Подскажите, чего не так? Этот вариант собирал и следующий, ничего понять не могу.

16  
Привет народ чот не робит ни чо на меге 16 тока переливы какие то никто не подскажет что за напасть

17  
У меня так и не получилось выжить из него понятную фразу.

9  
А что за S.ii ?

10  
Переменная S  бит iiСвистит, конечно. Сжатие очень большое. При написании пришлось делать много проб, подбирая более илименее удачные звуки.Некоторые варианты я  закомментировал,попробуйте заменить может вам он лучше подойдет. Попробуйте второй вариант, здесь применен другой способ ивроде свистит меньше.

11  
Я немогу определить синтаксис, так S.ii - можно просто S ?

12  
Это обращение к конкретному (в данном случае ii) биту байта S.

13  
Не понятно мне, к примеру:
S=11110000 
a в этом случае S.ii=11

14  
Биты в байте S идут в порядке весов так - 7,6,5,4,3,2,1,0

А это значит, что для  S=11110000 :
S.0 = 0
S.1 = 0
S.2 = 0
S.3 = 0
S.4 = 1
S.5 = 1
S.6 = 1
S.7 = 1
Результирующее значение всегда бит!

15  
Блин. S.ii= 00 ' а вот это отсекается 001111 и что за фигня с перевёрнутой битностью (

8  
Чёт свист и непонятки, даже после фильтра не то... Может так и должно быть?
В коде копался, много чего понял, там буквы все есть, а те, что закоментированны?

7  
Я в шоке, обязательно добавлю в кофемашинку )

6  
Можно здесь кое-что посмотреть: http://www.elektronik-labor.de/AVR/PWMsound.html

5  
Уважаемый автор!
Я повторил ваше устройство, оно мне очень понравилось.
Не могли бы вы фонемы "М" и "К" сделать с большей скоростью?
И исправить под них программу!
Буду очень благодарен!

3  
Честно говоря не понял. Можно любые слова проговаривать? Можно видео?

4  
Да, можно любые слова проговаривать, которые из терминала передали или от другого контроллера. Здесь аудио нужно, а не видео. В ближайшее время не запишу, нет времени.
Но поверьте на слово, это работает. Тем более, что я не автор, а админ портала.

2  
up

1-10 11-11
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2017