Форум РадиоКот https://radiokot.ru/forum/ |
|
Синтез речи на STM32F100 https://radiokot.ru/forum/viewtopic.php?f=59&t=94614 |
Страница 1 из 1 |
Автор: | uk8amk [ Чт сен 19, 2013 13:18:48 ] | ||
Заголовок сообщения: | Синтез речи на STM32F100 | ||
Описание моих экспериментов по созданию простого фонемного синтезатора речи на микроконтроллере. Было желание оформить в виде статьи на сайт, но так и не осилил Кото-редактор. Поэтому кладу здесь в PDF. Надеюсь, что кому-то окажется полезным. Схемы, платы, исходники с прошивками лежат на Яндекс Диске: http://yadi.sk/d/H-2kJlg39XgwW
|
Автор: | oleg110592 [ Чт сен 19, 2013 17:24:55 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
спасибо - очень интересно |
Автор: | uk8amk [ Пт сен 20, 2013 08:19:43 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Там среди файлов есть образец записи в MP3. Хотелось бы узнать ваши мнения, насколько понятно оно разговаривает. Сам я уже прислушался и не могу дать объективную оценку результата. |
Автор: | uk8amk [ Пт сен 20, 2013 09:03:10 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Кстати это не единственно возможный вариант синтезатора. Недавно мне попадались простые TTS на AVR 8-бит микроконтроллерах: - Atmega8 http://bascom.at.ua/publ/sintezator_rec ... a/1-1-0-79 - Atmega32 http://roboforum.ru/forum2/topic5106.html |
Автор: | urry [ Пт сен 20, 2013 10:00:04 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
имхо, хотелось бы получше. Кстати, а почему Вы не использовали в качестве внешней памяти ммс сд карточку ? Тогда размер библиотеки фонем можно было бы расширить. Красиво, конечно, но практическое применение вряд ли найдет - говорилка с готовыми фразами уже есть... Ну имхо. |
Автор: | oleg110592 [ Пт сен 20, 2013 10:22:36 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
uk8amk писал(а): Хотелось бы узнать ваши мнения, насколько понятно оно разговаривает... пару слов не совсем разборчиво, а так вполне, имхо бы приятнее был бы женский голос (иногда когда глаза устают слушаю книжки на планшете - синтезированный голос Алена вполне неплох). Насчет карточки - наверное можно было бы разместить все нужные живые фразы на ней, если конечно не читалка текста. |
Автор: | uk8amk [ Пт сен 20, 2013 12:40:39 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Да, вы правы насчёт применения. Для меня эта тема сейчас представляет чисто спортивный интерес. Про MMC - это отдельный разговор. Может я не умею их готовить, но было несколько случаев полного зависания карточек(до резета питания). Из чего я делаю вывод о их невысокой надёжности в режиме SPI. Для увеличения базы думаю заюзать M25P128 на 16 мегабайт или NAND flash от Samsung-a как недорогой вариант. Но NAND мне не очень нравится т.к. у него параллельная шина. А для быстрого прозрачного обмена нужен FSMC, что есть в камнях от LQFP100 и выше. По голосам. Алёна вроде коммерческая. Нашёл и скачал только Ольгу. Но она без нарезки по аллофонам. А вручную проставлять маркеры - пару месяцев работы. Имеется мужской голос с разметкой от TTS Festival(имя диктора не знаю). Но там тоже свои заморочки. Диктор всё равно читает с интонацией. У меня же система, как сейчас есть, не учитывает просодические характеристики. Вобщем есть над чем голову поломать. |
Автор: | balmer [ Пт сен 20, 2013 14:46:16 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
uk8amk писал(а): Сам я уже прислушался и не могу дать объективную оценку результата. Лично мне не нравятся щелчки между слогами. Но к сожалению не знаю - это исходное свойство звуков из которых синтезируется или микшере получается? |
Автор: | oleg110592 [ Пт сен 20, 2013 15:01:53 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Алена тут вроде есть http://rsload.net/soft/document/8298-balabolka.html применить можно - давно меня один заказчик мордует сделать бытовой термометр + влажность с голосом (только денег вкладывать не хочет), да еще можно напридумывать - например выключатель света с голосом и т.д., лишь бы внятно было. з.ы. вроде по теме японский вокалоид по русски: http://www.youtube.com/watch?v=XhQUJgRGRdQ |
Автор: | uk8amk [ Сб сен 21, 2013 10:04:12 ] | ||
Заголовок сообщения: | Re: Синтез речи на STM32F100 | ||
Спасибо за отзывы. Да, забыл сказать. Запись оразца MP3 с дешёвого микрофона, поэтому звук более жесткий. Но наверное вы уже и так догадались. Излом тона в словах проходит по границам звуков из фонемной базы(там элементы различной длины - аллофоны, дифоны и трифоны). Я прочитал в одной советской книжке, что для более или менее сносного синтеза русского языка необходимо иметь как минимум 10000 разных аллофонов. Дело в том, что в непрерывной речи звуки перетекают плавно один в другой. И если база недостаточно большая, то не получится состыковать звуки без разрыва формант. Сейчас у меня 680 элементов и такие разрывы неизбежны. Вот как раз хорошо видно на сонограмме. ![]() Во "взрослых" системах синтеза используются алгоритмы для сглаживания разрывов. У меня же сейчас вопроизводится как есть, без какой-либо дополнительной обработки. Ну и с учётом небольших вычислительных возможностей я могу максимум осилить плавную склейку звуков внахлёст(с плавным наездом-выездом). Надо будет как-нибудь попробовать этот вариант. Про простые девайсы вроде термометра. В плане качества действительно будет лучше записать десяток отдельных слов, затем из них компилировать фразы. Как например это сделано здесь http://radiokot.ru/circuit/digital/home/118/ А если применить сжатие звука и контроллер с достаточно большим объёмом памяти(256 и более КБ), то вполне может получиться одночиповое решение. А про заказчиков - правда. Пошёл сейчас народ либо бедный, либо жадный. Чем лечить такое - не знаю:) Вчера попался еще один интересный вариант простенького синтезатора на PIC16F628 из журнала Everyday Practical Electronics. Статья во вложении.
|
Автор: | uk8amk [ Ср окт 02, 2013 19:54:22 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Завёл речевой декодер SPEEX на отладочной плате STM32 VLDiscovery. Он относится к категории CELP и обеспечивает хороший коэффициент сжатия (скорость потока 1-2 килобайта в сек). За основу были взяты материалы: 1.Статья с Easyelectronics http://we.easyelectronics.ru/STM32/vosp ... speex.html 2.AN2812 Vocoder demonstration using a Speex audio codec on STM32F101xx and STM32F103xx microcontrollers -- порт узкополосного варианта(8КГц) на STM32. 3.AN0055 - Application Note. Speex Codec. Порт кодека под контроллеры EFM32 от Energy micro. К сожалению исходники комплектуются только скомпилированной либой и толку от них ноль целых хрен десятых. Зато есть утилита speexenc, конвертирующая звуковые WAV-чики в h-файлы. Которые потом легко цепляются компилятором. 4. www.speex.org - домашняя страница кодека с документацией. Исходники были допилены для поддержки узкополосного(NarrowBand 8КГц) и широкополосного(WideBand 16KHz) режимов. Оптимизированы по скорости загрузки буферов через DMA. По Flash памяти декодер занимает около 30КБ, RAM - около 5КБ(надо настроить такую большую кучу т.к. идёт динамическое выделение памяти). Для работы судя по описаниям требует минимум 8МГц(низкая тактовая мной не проверялась). Ограничения или недостатки: -только декодер(для уменьшения размера кодер вырезан); -в узкополосном режиме минимальная скорость потока 8 килобит(Quality=4); -только постоянный битрейт(CBR); -арифметика с фиксированной точкой. И как я понял процедура умножения сигналов вносит некоторую ошибку. Это проявляется в небольшом звоне голоса. В широкополосном режиме звон почти не заметен.В любом случае простой ФНЧ на выходе ЦАП поможет улучшить звук. Применение. Планируется использовать в моём синтезаторе. Также может быть интересен в простых конструкциях вроде говорящих часов как одночиповое решение. Исходники. Проект под KEIL MDK470. В файле 'main.h' выбрать частоту дискретизации(8/16K) и размер кодированного кадра ENCODED_FRAME_SIZE, соответсвующие параметрам выбранного звука. В файле 'main.c' функция play_message() воспроизводит звук. В проект включены варианты одного сообщения с разным уровнем сжатия. Звук снимается с выхода ЦАП PA4. Через кондёр можно подключить высокоомный динамик или наушники. Есть идейка использовать оба выхода ЦАП в противофазном режиме для увеличения мощности, это чтобы отказаться от УНЧ. Проект доступен по ссылке: http://yadi.sk/d/Js5nb6jLAHd3x |
Автор: | fedyasolder [ Вт ноя 01, 2016 11:56:08 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Я бы сделал не так. Наговорил все необходимые фразы, а потом порезал по серединам гласных. Таким образом проблема переходов решается. Но задача у меня обратная, как заставить мелкосхему принимать мою команду (неделю бошку ломаю). |
Автор: | oleg110592 [ Вт ноя 01, 2016 13:33:51 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Цитата: как заставить мелкосхему принимать мою команду старенькая тема. Так не пойдет? https://geektimes.ru/post/257382/ |
Автор: | fedyasolder [ Вт ноя 01, 2016 13:38:57 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Это для централизованного распознавания, дорого. Хочу на ATmega8 ![]() |
Автор: | uk8amk [ Вт ноя 01, 2016 14:22:53 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Для покрытия большей части русского словаря необходимо 4300 сегментов. Это по моим подсчётам дифонов. Если резать только по гласным, то кол-во возрастает минимум в несколько раз. В этом плане параметрический синтез с управляемыми генераторами требует намного меньше памяти, но больше математики. Для распознавания команд есть простое и не очень хорошее решение для атмеги http://www.polesite.ru/?p=2001 |
Автор: | fedyasolder [ Вт ноя 01, 2016 14:25:36 ] |
Заголовок сообщения: | Re: Синтез речи на STM32F100 |
Не обязательно весь словарь иметь для частного случая. Параметрическое тоже хорошо, видел примеры. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |