Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.86.184] |
|
Сообщ.
#1
,
|
|
|
Выложил новую базу для синтеза речи. Два часа сбалансированного текста, записанного в студии диктором радио. База размечена автоматически и созданы голоса для Festival, вот образец синтеза:
http://nshmyrev.narod.ru/temp/example.wav Скачать всё можно как обычно: http://download.berlios.de/festlang/msu_ru_nsh_clunits-0.5.tar.bz2 (200 Mb) Пока ещё осталось много направлений работы. Присоединяйтесь! |
Сообщ.
#2
,
|
|
|
Я, к сожалению, пока с festival плохо знаком. Поясните как эта база в нём используется для синтеза.
|
Сообщ.
#3
,
|
|
|
Ну как из базы выбираются куски с учётом двух функций - target cost (соответствие куска тому, что нужно синтезировать) и join cost (соответствие куска соседним кускам, выбранным из базы). Потом всё склеивается и получается синтезированный звук.
Подробнее об этом можно почитать в докуменации по Festival и в книжках, например в Spoken Language Processing (на dsp-book.narod.ru) |
Сообщ.
#4
,
|
|
|
Вот исправил кучу ошибок в базе, кое-где ударения проставил, транскрипцию обновил, сравните:
http://nshmyrev.narod.ru/temp/example2.wav |
Сообщ.
#5
,
|
|
|
nsh
Следущее предложение:"Присылайте пожелания и предложения." из http://nshmyrev.narod.ru/temp/example2.wavклассно звучит. Вообще убрать щелчки, спотыкачки и будет , пожалуй, лучше мультимедийного Коли! |
Сообщ.
#6
,
|
|
|
Ну так чтобы убрать спотыкачки, ручная разметка нужна. Она занимает 10 минут где-то одно предложение, а всего их 600. Сами посчитайте, сколько мне сидеть размечать.
|
Сообщ.
#7
,
|
|
|
А я думал, всё в авторежиме идёт. Значит ещё работать и работать...
|
Сообщ.
#8
,
|
|
|
Отличный синтез!!!
Напомни, где написано, как эту базу подключать к стандартному festival'ю. |
Сообщ.
#9
,
|
|
|
Установить 1.96. Распаковать в lib/voices/ru вместе с другими голосами. Запустить. Текст в кодировке utf-8.
|
Сообщ.
#10
,
|
|
|
В Debian Etch 4.0 есть такая версия:
rad@nemo:~$ festival --version festival: Festival Speech Synthesis System: 1.4.3:release Jan 2003 Непонятно, что они имеют в виду цифрами 1.4.3. |
Сообщ.
#11
,
|
|
|
На сайте http://www.cstr.ed.ac.uk/projects/festival/ написано, что у них есть только beta version of 2.0 (labelled 1.95-beta).
Что за версия 1.96? Можно ли голос сконвертировать на 1.4.3? |
Сообщ.
#12
,
|
|
|
to nsh:
Вобще мне нравится фестивальный подход, он, наверное, действительно более перспективный в плане улучшения качества речи. Однако чтобы разобраться в нём нужно потратить достаточно много времени, чтобы помогать вам его развивать. Я два раза скачивал систему, но так и не решился в ней разобраться. Что-то отпугивало. Незавершенность какая-то чтоли... Вы не обидитесь, если я приведу здесь для народа примеры аналогичной фразы моего синтезатора для сравнения (три голоса, не бесплатный синтезатор, но пока и не платный, просто экспериментальный)? фраза создается целиком автоматически из грамматического текста: voice 0 voice 1 voice 2 |
Сообщ.
#13
,
|
|
|
Синтез от nsh несравненно лучше. Без обид.
А насчёт замороченности festival, тут добавить ничего нельзя. Вчера я попробовал засунуть голос от nsh в festival 1.4.3. Попробовал по структуре каталогов понять, куда это можно там "присобачить". Неполучилось. nsh, тебе надо написать небольшую статью, что там да как делать. |
Сообщ.
#14
,
|
|
|
насколько я понимаю, nsh разметил вручную только часть сэмплов, в основном только те, которые относятся к данной фразе?
получается,что звуки в последних двух словах идеально сочетаются. У меня было такое: когда отлаживаешь на какойнибудь фразе - на ней звучит очень хорошо, а когда потом эти сэмплы (дифоны, куски или как там их называть) компилируются в другой фразе - слышаться не совсем естесственно. Возможно такое в фестивале? Или благодаря этим функциям target cost и join cost подбираются самые оптимальные по весу куски из базы? |
Сообщ.
#15
,
|
|
|
Цитата насколько я понимаю, nsh разметил вручную только часть сэмплов, в основном только те, которые относятся к данной фразе? Вы не совсем верно поняли, вернее совсем неверно. Цитата У меня было такое: когда отлаживаешь на какойнибудь фразе - на ней звучит очень хорошо, а когда потом эти сэмплы (дифоны, куски или как там их называть) компилируются в другой фразе - слышаться не совсем естесственно. Возможно такое в фестивале? Или благодаря этим функциям target cost и join cost подбираются самые оптимальные по весу куски из базы? Куски подбираются из базы оптимальные по минимальной ценовой функции, поэтому ошибки хоть и возможны, их не так много Цитата Вчера я попробовал засунуть голос от nsh в festival 1.4.3. Попробовал по структуре каталогов понять, куда это можно там "присобачить". Неполучилось. nsh, тебе надо написать небольшую статью, что там да как делать. Нужна более новая версия festival-1.96. Скачиваем следующие файлы: http://www.speech.cs.cmu.edu/awb/fftest/speech_tools-1.2.96-beta.tar.gz http://www.speech.cs.cmu.edu/awb/fftest/festival-1.96-beta.tar.gz http://www.speech.cs.cmu.edu/awb/fftest/festlex_CMU.tar.gz http://www.speech.cs.cmu.edu/awb/fftest/festlex_POSLEX.tar.gz http://www.speech.cs.cmu.edu/awb/fftest/festvox_kallpc16k.tar.gz Распаковываем в один каталог. Делаем следующие команды: cd speech_tools ./configure make cd ../festival ./configure make Переходим в каталог festival/lib/voices Создаём каталог ru Кладём туда msu_ru_nsh_clunits-0.4.tar.gz, распаковываем Переходим в каталог festival/bin Делаем текст в кодировке utf-8 в файле test.txt Запускаем ./festival Пишем (voice_msu_ru_nsh_clunits) (tts_file "test.txt" nil) Слушаем результат синтеза |
Сообщ.
#16
,
|
|
|
Собирается минут за 10 и отлично работает. А как это дело вызывать из консоли, чтобы на scheme не писать команды в интерпретаторе?
Да и большой файл (книжку с fictionbook.ru, около 500КБ) прочитать не может: festival> (tts_file "/home/rad/tmp/text.txt" nil) LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* . . . Ф у н д а м е н т а л ь н о е # closing a file left open: /home/rad/tmp/text.txt festival> Попробовал почитать документацию rad@nemo:~/development/festival/build/festival/bin$ ./festival --language ru --tts ~/tmp/test.txt "Unsupported language, using English" SIOD ERROR: unbound variable : voice_rab_diphone festival: fatal error exiting. rad@nemo:~/development/festival/build/festival/bin$ ./festival --language Russian --tts ~/tmp/test.txt "Unsupported language, using English" SIOD ERROR: unbound variable : voice_rab_diphone festival: fatal error exiting. rad@nemo:~/development/festival/build/festival/bin$ ls ../lib/voices english ru rad@nemo:~/development/festival/build/festival/bin$ ls ../lib/voices/ru/ msu_ru_nsh_clunits rad@nemo:~/development/festival/build/festival/bin$ ./festival --language msu_ru_nsh_clunits --tts ~/tmp/test.txt "Unsupported language, using English" SIOD ERROR: unbound variable : voice_rab_diphone festival: fatal error exiting. |
Сообщ.
#17
,
|
|
|
Цитата LTS_Ruleset: # *here* . . . Ф у н д а м е н т а л ь н о е # Тут дело не в размере файла а в том, что там слишком много не совсем правильных слов. Эту ошибку можно будет исправить в дальшейших версиях, пока же нужно просто это слово стереть. Здесь ему не нравятся точки в начале слова. Цитата Unsupported language, using English" Можно что-то в духе festival -b '(begin (voice_msu_ru_nsh_clunits) (tts_file "a.txt" nil))' Вместо интерпретатора использовать. |
Сообщ.
#18
,
|
|
|
Понял. Спасибо.
Если напишешь как тебе можно помочь с разметкой в русском языке и как изменения от разных добровольцев будут объединяться, думаю народ поможет. |
Сообщ.
#19
,
|
|
|
Как помочь, скачиваете базу, скачиваете Wavesurfer. Открываете файл .wav и делаете загрузку транскрипций из файла .lab. Исправляете транскрипцию, сохраняете. Присылаете мне исправленные файлы .lab.
|
Сообщ.
#20
,
|
|
|
Фестиваль только для линукса?
|
Сообщ.
#21
,
|
|
|
Нет, можно и под win использовать, скачав:
http://www.cs.dal.ca/~lalita/festival/win32/festival_1.95-beta_win32.zip Полное руководство по сборке тут: http://flame.cs.dal.ca/~lalita/festival/festivalXP.htm Можно ещё использовать cygwin или поставить linux в виртуальной машине vmware. В целом как-то надо сделать вариант с поддержкой SAPI, но руки не доходят. |
Сообщ.
#22
,
|
|
|
nsh
Цитата nsh @ Как помочь, скачиваете базу, скачиваете Wavesurfer. Открываете файл .wav и делаете загрузку транскрипций из файла .lab. То есть вы хотите сказать, что в принципе можно каким то образом довести качество до вашего образца, чтобы голос в авторежиме так наговаривал? И насколько это реально по времени? Жалко, что я не спец и не в линуксе. |
Сообщ.
#23
,
|
|
|
Еще раз, то что я выложил и есть автоматический режим. Rad может подтвердить. Ручной разметкой можно довести качество до натуральной речи.
А размечать не сложно, попробуйте. |
Сообщ.
#24
,
|
|
|
nsh
Но тогда какой смысл размечать вручную, если, например, хочешь послушать книжку? А есть что то вроде внутреннего корректируемого словаря ударений как у мультимедийного Коли? Плиз, выложите ещё один образец сложного предложения без ручной размётки. |
Сообщ.
#25
,
|
|
|
http://nshmyrev.narod.ru/temp/example3.wav
|
Сообщ.
#26
,
|
|
|
А где можно ознакомиться с правилами транскрипции?
|
Сообщ.
#27
,
|
|
|
Правила транскрипции описаны в файле festvox/msu_ru_nsh_lexicon.scm. Они основываются на работе Л.М. Захарова - http://www.philol.msu.ru/~otipl/SpeechGroup/publications/2004/z-4.doc. Ещё можно прочесть книжку по фонетике - Бондарко тут выложена, например.
В целом же нужно исправлять границы фонем, а не саму транскрипцию. Разве что ударения исправить иногда. |
Сообщ.
#28
,
|
|
|
щелчки можно убирать автоматически, несложная функция
я так понимаю, ручное исправление - один раз откорректированная база звуков справедлива для любого текста (как и скорректированный словарь ударений), а то может сложиться представление, что для каждой фразы нужно ее править вручную, чтоб звучала хорошо |
Сообщ.
#29
,
|
|
|
Ты имеешь в виду, разбивку поправить автоматом, или на созданном wav функцию прогнать?
|
Сообщ.
#30
,
|
|
|
разбивку поправить
to nsh: вас не затруднит в двух словах описать принцип, по которому в фестивале происходит разбивка наговорённых файлов на элементы транскрипции? распознавание? |
Сообщ.
#31
,
|
|
|
Ну, вобщем, да. Тренируются модели и они выдают первоначальную разметку. Не всегда оптимальную, конечно.
|
Сообщ.
#32
,
|
|
|
Доброго времени суток!
на сайте http://download.berlios.de/festlang/ есть примеры синтеза, самый качественный - russian_cl_urp.wav - кластерный синтез с помощью базы urp. однако нигде не нашел, чтоб попробовать, не подскажете, где? скачал msu_ru_nsh_clunits-0.4.tar.gz, но это совсем не то... заранее спасибо! |
Сообщ.
#33
,
|
|
|
В смысле, это оно и есть.
Добавлено Неужели по голосу не слышно |
Сообщ.
#34
,
|
|
|
поковырялся, разобрался что не так сделал...
неплохо, хотя до совершенства, конечно, далеко, часто делает ошибки в словах, причем в сложных. например такое предложение произносит с трудом: К концу октября стада усатых китов и кашалотов начинали миграцию в экваториальную зону. Их принимали малайские и индонезийские базы, а работники Океанской охраны Курильско-Камчатско-Алеутского пояса уходили в отпуск, или занимались любительским патрулированием, или помогали океанологическим и океанографическим экспедициям. как будто из слов буквы повыкидывал и пытается сказать... что интересно, ошибки делает там, где, например неопытный читатель будет делать. может будет эффективней создать БД на несколько десятков тысяч слов (например со словаря взять) с ударениями и транскрипцией и использовать его? иногда не произносятся отдельно стоящие буквы. слово "черная" надо задавать как "чорная", иначе неправильно произносить будет... в общем еще дорабатывать нада... чем могу помочь? и как обстоят дела в распознавании? можно ли научить распознавать Сфинкс три тысячи русских слов? |
Сообщ.
#35
,
|
|
|
Цитата иногда не произносятся отдельно стоящие буквы Это проблемы с разметкой, смотрите выше. Цитата слово "черная" надо задавать как "чорная", иначе неправильно произносить будет... Модуль расстановки ё отсутствует пока. Цитата может будет эффективней создать БД на несколько десятков тысяч слов (например со словаря взять) с ударениями и транскрипцией и использовать его? Вобщем-то так и сделано, сейчас используется словарь на 180000 слов. Но как бы в русском языке их немного больше . Надо в целом прикрутить систему русской морфологии с http://aot.ru Цитата чем могу помочь? Ну вроде вы и сами наметили круг задач. Хотя мне сейчас коррекция разметки актуальнее. Надо попробовать натренировать модель с HTK с начальной ручной разметкой. Может быть лучше будет гораздо. Сейчас почему-то гласные слишком короткие, а согласные слишком длинные. Цитата и как обстоят дела в распознавании? можно ли научить распознавать Сфинкс три тысячи русских слов? Можно, почему нельзя. Смотрите тему База данных для распознавания, скачивайте модель с http://voxforge.org, присылайте записи голоса для базы. |
Сообщ.
#36
,
|
|
|
С английским норм работает, а вот с русским такая проблема:
festival> (tts_file "1.txt" nil) LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # � *here* � � p r i v e t # closing a file left open: 1.txt Текстовый фаил в формате UTF-8. Не подскажете в чем может быть проблема ? Вот сам фаил 1.txt: privet привет |
Сообщ.
#37
,
|
|
|
Точку перед privet уберите. Это что, UTF BOF? Его не нужно.
|
Сообщ.
#38
,
|
|
|
Никакой точки там нет. Текст в UTF-8. Может я что то недоустановил ?
|
Сообщ.
#39
,
|
|
|
В UTF-8 текстах иногда встречается заголовок, называющийся BOF (Beginning of the file, код 0xFF 0xBF по-моему), некоторые редакторы делают его, а некоторые позволяют его удалять. Удалите этот заголовок, пожалуйста.
Добавлено На худой конец попробуйте распаковать файло отсюда: http://nshmyrev.narod.ru/temp/test.zip |
Сообщ.
#40
,
|
|
|
Правильнее будет указать festival'ю, что этот заголовок можно не учитывать.
|
Сообщ.
#41
,
|
|
|
Все спасибо =) Разобрался.
|
Сообщ.
#42
,
|
|
|
Цитата nsh @ Выложил новую базу для синтеза речи. Два часа сбалансированного текста, записанного в студии диктором радио. База размечена автоматически и созданы голоса для Festival, вот образец синтеза: http://nshmyrev.narod.ru/temp/example.wav Скачать всё можно как обычно: http://download.berlios.de/festlang/msu_ru_nsh_clunits-0.4.tar.gz (200 Mb) Пока ещё в базе не до конца проверены ударения и наличие ё, немного неправильно расставлены паузы. Помогайте исправить. А кто делал эту базу? И с помощью чего она автоматически размечалась? |
Сообщ.
#43
,
|
|
|
Цитата nsh @ Правила транскрипции описаны в файле festvox/msu_ru_nsh_lexicon.scm. Поясните, пожалуйста, где этот файл находится? |
Сообщ.
#44
,
|
|
|
в архиве с голосом
|
Сообщ.
#45
,
|
|
|
Цитата nsh @ Выложил новую базу для синтеза речи. Два часа сбалансированного текста, записанного в студии диктором радио. База размечена автоматически и созданы голоса для Festival, вот образец синтеза: http://nshmyrev.narod.ru/temp/example.wav Скачать всё можно как обычно: http://download.berlios.de/festlang/msu_ru_nsh_clunits-0.4.tar.gz (200 Mb) Пока ещё в базе не до конца проверены ударения и наличие ё, немного неправильно расставлены паузы. Помогайте исправить. Скажите, пожалуйста, а имеется ли список всех предложений, которые читает диктор? Или хотя бы части. Если есть, будьте добры, выложить. |
Сообщ.
#46
,
|
|
|
Список предложений находится в архиве с голосом в файле etc/txt.done.data Это текстовый файл в кодировке UTF-8.
|
Сообщ.
#47
,
|
|
|
Пересчитал базу кстати, поправил кучу ошибок и поддержку всяких возможностей, вроде автоопределение ё по словарю добавил. Новый пример:
http://nshmyrev.narod.ru/temp/example_mod.wav Обновление: http://www.mediafire.com/?txmdn9ud2oj (распаковывается поверх старых данных) |
Сообщ.
#48
,
|
|
|
Ну треск и заикания понятно от чего. А чем объясняется довольно сильный металлический оттенок? Синтез же вроде компилятивный или нет?
|
Сообщ.
#49
,
|
|
|
Знал бы исправил На самом деле там довольно примитивная склейка идёт с окном и скорее всего ещё куча ошибок в проге.
Добавлено Хотя кстати немного металла в оригинальном голосе диктора есть, но, конечно, не на столько много. |
Сообщ.
#50
,
|
|
|
Цитата nsh @ Обновление: http://www.mediafire.com/?txmdn9ud2oj (распаковывается поверх старых данных) Могу организовать постоянный сайт. Кидаешь в меня по почте, я оперативно выкладываю и отдаю ссылку. |
Сообщ.
#51
,
|
|
|
Посмотрел новую версию, в общем прогресс налицо.
Самое заметное из улучшений: - стал читать союзы, раньше их пропускал. - отличает букву ё Не поправили: - Щелчки - Не равномерная скорость чтения, некоторые куски буквально тараторит, некоторые немного тянет - Не регулируется скорость и тембр голоса (если тембр не регулируется и бог с ним, то скорость я бы хотел поставить побольше) Пожелания: - Жаль что его нельзя включить параллельно со старой версией (только переименовывать папку), сравнивать трудно - Может всетаки сделать простенький сайт куда выкладывать новости о выходе версий |
Сообщ.
#52
,
|
|
|
Спасибо за замечания!
Цитата - Не равномерная скорость чтения, некоторые куски буквально тараторит, некоторые немного тянет Пример текста приведите пожалуйста, я посмотрю, в чём там дело. Цитата Не регулируется скорость и тембр голоса (если тембр не регулируется и бог с ним, то скорость я бы хотел поставить побольше) Это важный недостаток используемого метода синтеза. Ведётся работа в этом направлении. Цитата - Может всетаки сделать простенький сайт куда выкладывать новости о выходе версий Сайт есть: http://developer.berlios.de/projects/festlang. Эта версия там не лежит, потому что она предварительная. Для вас, разработчиков так сказать. |
Сообщ.
#53
,
|
|
|
2nsh
Добрый день! Хорошее дело задумали, но что-то в форуме мало сообщений. Никому не интересно? Поставил русский голос на FreeBSD 7.0. И чудо! - работает Повесил произношение на некоторые системные события (KDE). Нашёл небольшой баг - при произношении фразы "Получена новая почта", слово "почта" произносится как бы из двух частей, и последняя часть с небольшим запаздыванием. Вернее даже так "почаата" |
Сообщ.
#54
,
|
|
|
Спасибо, есть такая ошибка. Попробую её исправить и новую версию выложить в ближайшие дни.
|
Сообщ.
#55
,
|
|
|
Установил Фестиваль на Убунту. Запихнул словарь в /usr/share/estival/voice/ru
Получаю вот такую ошибку festival> (voice_msu_ru_nsh_clunits) (tts_file "/home/mikhail/txt.done.data" ni l) msu_ru_nsh_clunits LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* ( # closing a file left open: /home/mikhail/txt.done.data festival> Файл не трогал. При вызове (SayText "файл") получаю фэйл. Чуствую, что где то, что то не там лежит. Сегодня ковырятся времени нет, буду завтра вечером, если подскажете что буду признателен. Про фестивал первый раз прочитал час назад. |
Сообщ.
#56
,
|
|
|
Цитата (tts_file "/home/mikhail/txt.done.data" nil) В файле что лежит-то? Попробуйте сначала текст без лишних знаков препинания и т.д. Только из букв в кодировке utf-8. (tts_file "test.txt" nil) Цитата (SayText "файл") получаю фэйл. Чего получаете, не понял? |
Сообщ.
#57
,
|
|
|
С файлом я действительно намудрил, когда оставил одну фразу, все прочиталось.
Но когда вызываю (SayText "файл") он читает букву 'а' как 'э', типа на английском Выглядит это так festival> (SayText "файл") pau f aa j l pau #<Utterance 0xb77c5178> festival> |
Сообщ.
#58
,
|
|
|
Цитата Но когда вызываю (SayText "файл") он читает букву 'а' как 'э', типа на английском Хм, да, и такая ошибка тоже есть. Исправим в скором времени. Если ещё наткнётесь на не очень удачно читаемые слова - сообщайте пожалуйста. |
Сообщ.
#59
,
|
|
|
Добрый день!
Скажите, что значит сделать разметку текста, и как это делается? Можно ли исправить ударения и произношения в некоторых словах, если можно то как это сделать (в каких файлах что исправить)? |
Сообщ.
#60
,
|
|
|
Цитата Скажите, что значит сделать разметку текста, и как это делается? Скачиваете программу WaveSurfer, в файлах кладёте вместе wav файл и lab файл, открываете файл в wavesurfer. Выбираете режим транскрипции, исправляете границы и сохраняете. Новые lab файлы присылаете мне. Выглядит это так: http://www.speech.kth.se/wavesurfer/man.html#tran Цитата Можно ли исправить ударения Можно, слова нужно занести в словарь. Цитата и произношения в некоторых словах С произношением сложнее, скорее всего произношение это проблемы разметки, но нужно смотреть в каждом конкретном случае отдельно. Какие слова или, точнее, фразы произносятся неверно? Надо бы составить список в десяток фраз, потом можно будет им заняться. Пока у нас в списке только "файл". |
Сообщ.
#61
,
|
|
|
Скажите как сгенерировать wav файл русской речи? Дело в том, что Festival при генерации wav файла из txt файла с русским текстом произносит только числительные на английском языке. При этом с воспроизведением русского текста из txt файла никаких проблем не возникает.
|
Сообщ.
#62
,
|
|
|
Цитата Дело в том, что Festival при генерации wav файла из txt файла с русским текстом произносит только числительные на английском языке. При этом с воспроизведением русского текста из txt файла никаких проблем не возникает. Если Вы о text2wave, нужно добавить -eval '(voice_msu_ru_nsh_clunits)' или добавить эту строчку в festival/lib/siteinit.scm. |
Сообщ.
#63
,
|
|
|
Спасибо!wav файл с русской речью получил.
Цитата Скачиваете программу WaveSurfer, в файлах кладёте вместе wav файл и lab файл, открываете файл в wavesurfer. wav файл я сгенерировал, а где мне для него взять файл транскрипций - *.lab |
Сообщ.
#64
,
|
|
|
Цитата wav файл я сгенерировал, а где мне для него взять файл транскрипций - *.lab Файлы не нужно генерировать. Они лежат в подкаталоге скачанного голоса wav. Файлы с метками .lab лежат в подкаталоге lab. |
Сообщ.
#65
,
|
|
|
Если я правильно вас понял, то последовательность правильных действий для разметки текста такова:
1) Имеем txt файл с отрывком, который необходимо воспроизвести. 2) Для этого генерируем wav файл из нашего txt файла и слушаем, что нас в нем не устраивает. А именно: какие буквы(звуки) произносятся не так как нам хотелось бы. 3) Для этого нам нужно в программе WaveSurfer разметить этот wav файл. Такая разметка нужна для того, чтобы узнать какие звуки нас не устраивают. 4) После того, как выяснили какие звуки (буквы или дифоны) нас не устраивают, открываем какой-нибудь(или все?) файлы из каталога /festival/lib/voices/ru/msu_ru_nsh_clunits/wav в WaveSurfer с соответствующим lab файлом. Находим нужный звук и меняем его продолжительность. Пересохраняем lab файл и заново воспроизводим наш отрывок из txt файла. Неужели это правда так? Если так, то это довольно сложно! Я думал, что при создании нашего wav файла, должен генерироваться соответствующий lab файл и меняя границы в этом lab файле программой WaveSurfer изменялся бы и wav файл. Тогда можно было бы легко и просто изменять длительность некоторых звуков прямо из программы WaveSurfer. Скажите как все-таки правильно? |
Сообщ.
#66
,
|
|
|
Цитата Если я правильно вас понял, то последовательность правильных действий для разметки текста такова: Нет, не так. Размечать нужно всё подряд из каталога wav, по порядку и методично. Искать отдельные звуки не оптимально, потому что после исправления в одном месте ошибка вылезет в другом. Берём файл, скажем, ru_0100, смотрим на каждый звук и подправляем границу, чтобы она точно указывала на границу звука. И так для всех звуков из файла. Затем сохраняем результат. |
Сообщ.
#67
,
|
|
|
Цитата Нет, не так. Размечать нужно всё подряд из каталога wav, по порядку и методично. Получается, что это еще сложнее чем я думал! wav файлов в каталоге-844. Для кажого wav файла есть lab файл, в котором указаны как я понял длительности различных звуков (~300 или 500 примерно). Это что получается, что нужно подправить около 844*500=422 000 звуков???????? Допустим у меня есть выражение ""Внимание, на установке АВТ 6 неисправны агрегаты с номерами №1 №2 №456". Не корректно произносятся имя устанвки АВТ 6 (оно как то проглатывается)(писал по разному и АВЭТЭ и АВЫТЭ- звук А очень короткий), у слова агрегаты ударение падает на букву Ы. Как мне это исправить? Мне что для этого нужно всю базу звуков подправить? все 422 000 звуков??? Ведь мне то нужно исправить только в одной фразе! |
Сообщ.
#68
,
|
|
|
Во всей базе 50000 звуков, а не 40000. По 10 минут на файл - 2 месяца работы
Отдельную фразу поправить не так легко, но я посмотрю. Добавлено По поводу АВТ, нужно что-то вроде +АВЫТ+Э |
Сообщ.
#69
,
|
|
|
Да, конечно очень много работы! Желаю вам успехов в этом деле!
Я так понимаю, что синтезатор речи Festival сделан на основе художественной литературы, поэтому он и будет лучше воспроисводить художественный текст. А мне нужен синтезатор, который бы хорошо воспроизводил технический текст (специфические имена установок, числительные). Может быть вы знаете такие продукты для Unix систем? Все что я смог найти по этой теме сводится к тому, что качество Festival на данный момент лучшее из все систем синтеза речи для Unix систем. Попробовал написать +АВЫТ+Э. При этом основная проблема в том, что первый звук А проглатывается, или проговаривается как то отрывисто и быстро, следующие звуки тоже говорятся как то быстро, так что при прослушивании не понимаешь, что за имя установки произнесено. Хотелось бы что бы это имя произносилось размеренно и плавно, по сути нужно просто сказать А, Вэ, Тэ. Скажите а чтобы исправить ударения, нужно тоже всю базу звуков перебирать? или можно как то попроще сделать? |
Сообщ.
#70
,
|
|
|
to Igor730
Вы имеете в виду лучшее качество из свободного ПО? Вам принципиально бесплатное? Open Source обычно всегда предполагает необходимость доработки "под себя". Другое дело доработка бывает либо сложной, либо простой. В данном случае тема наукоёмкая. Есть системы попроще настраиваемые, но синтезированный голос звучать будет более механически. Если ваш браузер поддерживает тег <BGSOUND> можете послушать АВэТэ http://www.bgpu.ru/lit/files/avete.html там есть java апллет http://www.bgpu.ru/lit/files/sintese/appletic/sintese.html , но он цифры не понимает, напишите там "АВэ"Тэ |
Сообщ.
#71
,
|
|
|
Может завести какой нибудь сорс контроль для лабов, а то жалко если над одним и тем же файлов будут несколько человек работать. Я, конечно, понимаю, что пока один человек только трудится, но вдруг кто начнет помогать
|
Сообщ.
#72
,
|
|
|
Цитата Может завести какой нибудь сорс контроль для лабов, а то жалко если над одним и тем же файлов будут несколько человек работать. Я, конечно, понимаю, что пока один человек только трудится, но вдруг кто начнет помогать Спасибо за предложение, файлы разметки и база давно доступна и в системе хранения версий на voxforge.org. |
Сообщ.
#73
,
|
|
|
Не совсем я понял, где там версии лабов лежал. Хотел посмотреть пример файла до разметки и после. Пытался послушать , ну чтоы помочь размечать, так и не понял, что хорошо, а что плохо, хотя медмедьмне по ушам не гулял. Например в 418 слово 'дверь' странно звучит, а в 13 нормально, транскрипция выглядит одинаково d vv ee r. Вообщем без ликбеза по разметке, врядли помочь смогу, это еще с учетом незнания правил транскрипции.
|
Сообщ.
#74
,
|
|
|
Цитата Не совсем я понял, где там версии лабов лежал. http://www.dev.voxforge.org/projects/Russian/browser/Trunk/Audio/Original/16kHz_16bit/urp Цитата ну чтоы помочь размечать, так и не понял, что хорошо, а что плохо, хотя медмедьмне по ушам не гулял. Вы меня не совсем правильно поняли. Нужно не звуки отмечать, а границы звуков. Например, сейчас в ru_0003 начало такое: # 0.41200 125 pau 0.53200 125 s 0.56200 125 ay 0.64200 125 s 0.74200 125 p а на деле оно должно быть таким: # 0.429754 125 pau 0.520118 125 s 0.576858 125 ay 0.652512 125 s алгоритм автоматической разметки неправильно определяет границы, нужно их подправить. Добавлено И начните с простого, пошлите запись своего голоса в базу voxforge |
Сообщ.
#75
,
|
|
|
to Iskanderus
Прослушал пример синтеза. Конечно, услышать то чего хотелось не удалось. Дело в том, что нужен синтезатор речи с качественным воспроизведением речи для применения в промышленном производстве. При этом не важно будет ли он платным или бесплатным. |
Сообщ.
#76
,
|
|
|
А никто не подскажет - возможно сконвертировать голос во flite?
|
Сообщ.
#77
,
|
|
|
Возможно, но придётся покодить. Время работы - 1 мес.
|
Сообщ.
#78
,
|
|
|
to nsh
Скажаите а какие параметра синтез речи у Фестиваля? Частота дискретизации и битрейт? |
Сообщ.
#79
,
|
|
|
Цитата Скажаите а какие параметра синтез речи у Фестиваля? Частота дискретизации и битрейт? Любые |
Сообщ.
#80
,
|
|
|
А насчет flite, как это сделать?
Я в вопросах festival и flite пока откровенно плаваю, мне нужно было для практической цели - сделать на программной PBX FreeSWITCH каталог номеров. Так вот FS поддерживает flite но не festival (последний не thread safe говорят разработчики). Не мог бы кто нибудь помочь с переносом? На дело поддержки русского я мог бы потрать некоторое время, но познаний пока катастрофически не хватает. |
Сообщ.
#81
,
|
|
|
Цитата А насчет flite, как это сделать? Ну как, сесть и закодировать. Хотите конкретные ответы - задавайте конкретные вопросы. Цитата Так вот FS поддерживает flite но не festival (последний не thread safe говорят разработчики). Я бы добавил festival поддержку в серверном режиме, как это в asterisk сделано - http://www.asterisk.org/doxygen/1.4/app__festival_8c-source.html |
Сообщ.
#82
,
|
|
|
Я натолкнулся ошибку, когда в слове есть прописная "у". Ошибка выскакивает когда я обращаюсь к серверу через телнет.
LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* \ufffd # ну и молчит соответсвенно. Заглавная "У" произносится нормально. Если запустить festival и вводить команды напрямую, то все поизносится нормально. Есть у кого-нибудь обьяснение этому чуду? Сижу под Debian stable. |
Сообщ.
#83
,
|
|
|
Цитата LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* \ufffd # К "у" это отношения не имеет. Скорее всего, в поток попала некорректная буква, нужно такие символы фильтровать. |
Сообщ.
#84
,
|
|
|
Дык вручную разные слова с "у" вводил. Надо будет с закрытой форточкой попробовать чтоб в телнет всякую дрянь не задувало.
|
Сообщ.
#85
,
|
|
|
SOS ЛЮди помогите. я плохо во всем этом разбираюсь, но мне нужна помощь. НЕ могу и не знаю, где найти и как скачать SAPI4 для XP.
|
Сообщ.
#86
,
|
|
|
Gella_NovElly
например отсюда http://activex.microsoft.com/activex/controls/sapi/spchapi.exe |
Сообщ.
#87
,
|
|
|
king огромное спасибо.
|
Сообщ.
#88
,
|
|
|
to nsh
Добрый день. Извините что так долго, не отвечал, на ваш, пост. Все руки не доходили заглянуть, что нового тут с голосом. Насчет того, что скорость не регулируется, это навсегда? Очень жаль, так его будет намного хуже пользовать. К любому голосу сначала надо привыкнуть, а потом ставвишь его быстрее. А с одной скоростью, это не дело. Я поковырялся, с голосом. Пытался заставить его прочитать достаточно длинный текст, целиком и посмотреть, что получится. Вот во что это вылилось: 1. Всетаки причина того, что он не читает некоторые предложения не в символах юникода. Вот кусок текста, сначала c символами, а потом исправленный. А толку от исправлений нет. Вот пример с символами и без. ________________________________________ Они были заняты беседой. – А что такое вообще церковь? Это организация, которая, пользуясь предрассудками и людскими суевериями, норовит встать посредником между людьми и богом[2]. Причем самовольно, ведь сам бог их на это отнюдь не уполномочивал, – седовласый мужчина, восседающий на вороном жеребце, замолчал и ожидающе покосился на своего спутника. Они были заняты беседой. - А что такое вообще церковь? Это организация, которая, пользуясь предрассудками и людскими суевериями, норовит встать посредником между людьми и богом[2]. Причем самовольно, ведь сам бог их на это отнюдь не уполномочивал, - седовласый мужчина, восседающий на вороном жеребце, замолчал и ожидающе покосился на своего спутника. ________________________________________ Я подобрал Регулярные выражения для замены и воткнул их в фильтры KTTSMGR. Там проблема в дефисе, когда после него стоит не читаемый символ, например ". Начальный символ должен быть читаемый (иногда и так работает, но тогда второй должен быть читаемый) Квадратная скобка соединенная со словом тоже не читается. Проблемы с пробелом в конце предложения. Я это все испытывал на KTTSMGR, а он по умолчанию считает [.:;!?] концом предложения и скармливает движку по одному предложению. Так что глюки могут быть и в сочетание с дефисом других знаков. 3-и фильтра для KTTS могу прислать куда скажите 1. (Russion Festival unspeakables.xml) Заменяет всякие не читаемые символы (типа скобок) на соответствующий текст Этот фильтр не обязателен, дело вкуса. 2. (Filter for Russion Festival voice.xml) Вырезает все символы с которыми могут быть проблемы. 3. (Gluk.xml) Исправляет найденные глюки (типа удаляет все пробелы в конце предложения) Запуска их надо именно в таком порядке, только 1 можно не использовать. Мне кажется, надо 2-ой фильтр интегрировать в голос. Раз уж он теперь воспринимает юникод, так надо гарантированно хоть как-то озвучить предложение с любыми символами. Насчет 3-его фильтра, смотрите сами, то ли его тоже интегрировать, то ли найти глюки почему он так реагирует и поправить. 2. В процессе нашел, кое-какие глюки произношения. Отдельно стоящие гласные стали читаться, но не все. ( "И" не читается. И вместо "О" читается "А". И вариант "Ее" читается как-то странно что-то среднее между Его и Её. Вот на этой строчке проверял. А что? И когда? Я тут! У моего дома. Её надо найти. Ее нет. Её нет. Ё мое. И мое е. О мой бог! О дай мне эти бананы! В "отсрочим" тоже читает "А" получается отсрАчим. Тут вместо "А" что-то не то. А ступая А тут слово человек как-то исковеркано. молодой человек А это уже ни в какие ворота, что-то не то с буквой "и" тут глобально, как-только он ее не корежит. такое изобилие А тут почему-то лишняя буква "а" вместо отметил отметилА Одобрительно отметил Мелифаро. Это прелесть, послушай обе строчки по отдельности поводу нечто нечто у этого обстоятельного парня, которого я до сих пор считал самым отчаянным любителем водных процедур, их было "всего"восемнадцать! 3. К сожалению так и не смог вспомнить на каком тексте мне показалось, что он то тормозит, то тараторит. Возможно такое впечатление сложилось, из-за комбинации щелчков, когда кажется что он тянет слова, и проглатывания гласных (местоимений или как с "молодой человек") тараторит. 4. Похоже знаки препинания пока не анализируются. По крайней мере "?" знак никак не влияет на произношение. |
Сообщ.
#89
,
|
|
|
Спасибо за замечания, постраюсь на выходных поглядеть. Что-то наверняка можно исправить.
|
Сообщ.
#90
,
|
|
|
storm@laptop:~$ echo "Hello word"|festival --tts
Warning: format is changed to S16_BE cлышно фразу на англ языке storm@laptop:~$ echo "Привет Родина"|festival --tts Warning: format is changed to S16_BE ничего не слышно, но и ошибок типа: "Unsupported language, using English" не выдает. может есть какая-то фишка, что отдельно запускает русскую речь с консоля или делает ее по умолчанию. |
Сообщ.
#91
,
|
|
|
echo "Привет Родина" | text2wave -eval '(voice_msu_ru_nsh_clunits)' | aplay
|
Сообщ.
#92
,
|
|
|
nsh, спасибо за ответ. есть еще вопрос:
storm@storm:~$ echo "Привет Родина" | text2wave -eval '(voice_msu_ru_nsh_clunits)' | aplay pau p rr i vv ee t r oo dd ae n a pau Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono Сказало очень чисто. Все гуд. После введения второй фразы с клавиатуры: storm@storm:~$ echo "Доброе утро" | text2wave -eval '(voice_msu_ru_nsh_clunits)' | aplay pau d oo b r ay j e uu t r a pau Playing raw data 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono шипение и ни звука. Чтобы это могло значить? |
Сообщ.
#93
,
|
|
|
Ну aplay глючит, можно попробовать:
echo "Доброе утро" | /home/shmyrev/work/voice/festival/bin/text2wave -eval '(voice_msu_ru_nsh_clunits)' | aplay -f S16_LE -r 16000 |
Сообщ.
#94
,
|
|
|
nsh, огромное спасибо за совет. все гуд .
были ли пробы заставить операционку говорить? у меня линукс. вот хочу попробовать сделать так, чтобы он здоровался (хотябы для начала) |
Сообщ.
#95
,
|
|
|
по непонятным причинам при вводе:
storm@storm:~$ echo “Astala vista baby”| festival --tts после произношения всей фразы, начал повторять три первых буквы .... И еще...какая команда тестирует дату и время и озвучивает их? |
Сообщ.
#96
,
|
|
|
Ну бывают ошибки. В принципе можно стараться их исправлять. По поводу "научиться говорить", это уже многие приложения делают. Emacspeak, Orca и ещё не счесть
http://linux.tiflocomp.ru/docs/orca-festival-ru.php |
Сообщ.
#97
,
|
|
|
я вкурсе что есть оrka, есть еще и gnome-voice-control. А вы слышали как орка говорит английские слова, если на них попадает в менюшке например . Интересуют более солидные вещи. Работали ли вы с Sphinx4? Вот пробую разобраться с распознаванием русской речи и написанием (составлением) словаря.
|
Сообщ.
#98
,
|
|
|
Цитата nsh @ Вобщем-то так и сделано, сейчас используется словарь на 180000 слов. А его по лицензии GPL можно как-то получить? |
Сообщ.
#99
,
|
|
|
Цитата А его по лицензии GPL можно как-то получить? словарь ударений и частей речи находится в архиве с голосом в файле dict/msu_ru_nsh_dict.scm. Он был сделан с помощью программы synan с сайта http://aot.ru |
Сообщ.
#100
,
|
|
|
Есть предложение собрать воедино все символы и комбинации символов, которые festival пока не распознает.
-----> festival не распознает следующие 4 символа: Цитата ----->«»/: Не работает на 2ух сочетаниях: Цитата где * - один и более пробелов. Причем на "?." работает.?*. Цитата где * - любой символ кроме пробела. Т.е.:.* Цитата q4a1@q4a ~/festival/bin $ cat test1.txt 123. q4a1@q4a ~/festival/bin $ ./text2wave -eval '(voice_msu_ru_nsh_clunits)' test1.txt -o test1.wav pau s t oo d v aa c a tt t rr ii pau Duration tree extreme for ii 3.21155 q4a1@q4a ~/festival/bin $ cat test2.txt 123.r q4a1@q4a ~/festival/bin $ ./text2wave -eval '(voice_msu_ru_nsh_clunits)' test2.txt -o test2.wav LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # 1 2 3 *here* . r # q4a1@q4a ~/festival/bin $ cat test3.txt .u q4a1@q4a ~/festival/bin $ ./text2wave -eval '(voice_msu_ru_nsh_clunits)' test3.txt -o test3.wav LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* . u # |
Сообщ.
#101
,
|
|
|
Мне легче сказать вам, какие символы распознаются:
Буквы: A-z, А-я, символы: - ' + ? ! . , (+ специально используется для расстановки ударений) цифры: 0-9 Остальные нужно вырезать. |
Сообщ.
#102
,
|
|
|
Цитата nsh @ Ещё работает ';' =)- ' + ? ! . , (+ специально используется для расстановки ударений) Хочу для начала 1-2 книжки руками поправить, а потом скриптик написать, заменяющий все непонятные для festival символы на пробелы. |
Сообщ.
#103
,
|
|
|
Я решил эту проблему добавив фильтры в kttsmgr
И попробовал слушать книжку после этого. Стали вылазить странные глюки. Отдельные слова читаются нормально, а вот именно в таком сочетании глючит. Хотя это все конечно встречается редко. И этим страдают и релизы коммерческих голосов. |
Сообщ.
#104
,
|
|
|
to nsh
Здравствуйте! У меня к вам такой вопрос! Я хочу использовать festival как сервер. Запускаю фестиваль такой командой ./festival --server '(begin(voice_msu_ru_nsh_clunits))'. Фестиваль загружается и работает как сервер. Я написал программу клиент которая коннектится к этому серверу и передает ему команду в виде текстовой строки на воспроизведение речи. команда(текстовая сторка) такая: (SayText "привет. я Фестиваль и так далее") (audio_mode async)". Строка воспроизводится, но проблема в том что очень большая задержка перед воспроизведение речи (около 10-15 секунд). Если я посылаю на воспроизведение несколько фраз подряд, то задержка может доходить до минуты и больше. Скажите как мне сделать задержку перед выводом речи (в серверном приложении фестиваля) минимальной? |
Сообщ.
#105
,
|
|
|
Сервер использовать помощнее, для нескольких запросов - несколько серверов. Кэшировать результат. Фразы посылать короткие, а не весь текст сразу. Как вариант можно переписать приложение на C для ускорения производительности.
|
Сообщ.
#106
,
|
|
|
to nsh
скажите а где можно узнать про все опции которые которые понимает фестиваль при получении текста! например, можно написать: "на агрег+ате" - что в данном случае означает символ "+"? наверняка есть еще специальные символы! напрмер запятая распознается как пауза после слова, и если слова в фразе перечислять через запяту то они звучат по другому нежели без запятых! где можно узнать про все такие символы и их значение? |
Сообщ.
#107
,
|
|
|
+ ставит ударение
Больше символов никаких нет, текст системой обрабатывается автоматически, поэтому иногда запятая воспринимается, как пауза, а иногда синтезатор решает читать без паузы. Звучание зависит от многих параметров - интонации, положения в слове, расстояния до запятых и так далее. Зависимость эта сложная, поэтому придётся полагаться на синтезатор. |
Сообщ.
#108
,
|
|
|
спасибо
|
Сообщ.
#109
,
|
|
|
nsh, насколько актуальна разметка на http://www.dev.voxforge.org/projects/Russian/browser/Trunk/Audio/Original/16kHz_16bit/, есть ли смысл размечать вручную или есть какие-нибудь другие решения?
|
Сообщ.
#110
,
|
|
|
Разметка тут - http://www.dev.voxforge.org/projects/Russian/browser/Trunk/Audio/Original/16kHz_16bit/urp последнияя версия. Размечать вручную смысл есть, конечно, но если есть желание серьёзно заниматься этим, нужно сначала подумать немного, как бы к делу приступить.
Добавлено Проблема в том там, что диктор делал слишком много пауз, что негативно сказывается на качестве синтеза. Простой разметкой тут не поможешь. Нужно сначала в автоматической разметке нужно учесть этот фактор и сделать специальный звук для оконечной гласной либо надо базу заново перезаписывать. |
Сообщ.
#111
,
|
|
|
что значит сделать звук для оконечной гласной?
Как мне показалось, основная проблема плохой речи, это именно размета, т.к. некоторые звуки в некоторых предложениях неправильно размечены, т.е. слишком короткие, поэтому идет заикание и проглатывание. А как влияют паузы я не заметил. А чем делалась автоматическая разметка? Нельзя ли доработать программу, чтобы она нормально автоматическую разметку делала? |
Сообщ.
#112
,
|
|
|
Цитата Как мне показалось, основная проблема плохой речи, это именно размета, т.к. некоторые звуки в некоторых предложениях неправильно размечены, т.е. слишком короткие, поэтому идет заикание и проглатывание. А как влияют паузы я не заметил. Короткие звуки - скорее признак, а не причина. Причину я выше написал. Цитата А чем делалась автоматическая разметка? Нельзя ли доработать программу, чтобы она нормально автоматическую разметку делала? Можно доработать, ссылку на статьи с методами я давал в одном из тредов: Вопрос по HTK |
Сообщ.
#113
,
|
|
|
привет, я тут новичок, кто подскажет какая хорошая софтина для конвертации речи в текст и где ее можно скачать???
заранее спасибо |
Сообщ.
#114
,
|
|
|
Вышел новый выпуск!
Из изменений 1. Интегрированы обновления с буквой ё, теперь не надо докачивать архив 2. Пересчитана разметка с помощью более точных моделей, на мой взгляд, голос стал плавнее Впереди новые выпуски, тестируйте, пишите об ошибках, присоединяйтесь. http://download.berlios.de/festlang/msu_ru_nsh_clunits-0.5.tar.bz2 |
Сообщ.
#115
,
|
|
|
nsh, я тут изобразил spec-файл для сборки rpm под suse. Если в нем поменяете определения main_dir и doc_dir, сможете собрать и под другие rpm-based дистрибутивы. Сборку для suse могу закачать, куда скажете, если пожелаете.
festival-msu_ru_nsh_clunits.spec %define name festival-msu_ru_nsh_clunits %define version 0.5 %define release 1 %define main_dir usr/share/festival/voices/russian/msu_ru_nsh_clunits %define doc_dir usr/share/doc/packages/%{name} Summary: Russian voice for the Festival Name: %{name} Version: %{version} Release: %{release} License: GPL Group: Productivity/Text/Convertors BuildArch: noarch BuildRoot: %{_builddir}/%{name}-root URL: http://festlang.berlios.de/docu/doku.php?id=russian Source: http://download.berlios.de/festlang/msu_ru_nsh_clunits-%{version}.tar.bz2 Distribution: openSuSE Vendor: Nickolay V. Shmyrev <nshmyrev@yandex.ru> Packager: Alexander Kurin <alexander.kurin@gmail.com> Provides: festival-msu_ru_nsh_clunits Requires: festival >= 1.96 %description Russian voice msu_ru_nsh_clunits for the Festival Speech Synthesis System. %prep exit 0 %build mkdir -p %{buildroot}/%{main_dir} tar --directory=%{buildroot}/%{main_dir}/.. -xjf \ %{_sourcedir}/%{name}/msu_ru_nsh_clunits-%{version}.tar.bz2 mkdir -p %{buildroot}/%{doc_dir} mv %{buildroot}/%{main_dir}/{README,COPYING} %{buildroot}/%{doc_dir} exit 0 %install exit 0 %clean exit 0 %files %defattr(-,root,root,0755) %doc /%{doc_dir}/README %doc /%{doc_dir}/COPYING %dir /%{doc_dir} /%{main_dir}/.. В конце файла должен быть возврат каретки, движок форума почему-то его вырезает. |
Сообщ.
#116
,
|
|
|
Цитата nsh, я тут изобразил spec-файл для сборки rpm под suse. Если в нем поменяете определения main_dir и doc_dir, сможете собрать и под другие rpm-based дистрибутивы. Сборку для suse могу закачать, куда скажете, если пожелаете. Спасибо большое. А сборку, я думаю, нужно в дистрибутив закачивать: http://en.opensuse.org/Build_Service |
Сообщ.
#117
,
|
|
|
Выложил здесь: http://download.opensuse.org/repositories/home:/19th/
|
Сообщ.
#118
,
|
|
|
Немножко потестировал систему. Чтобы было не так скучно, написал скрипт на perlе, который читает на сайте anecdot.ru анекдот и его оценку, если оценка достаточно большая, то анекдот скармливается festival серверу. Пока пару субъективных впечатлений:
а) очень не хватает нормального словаря с буквой ё. Одно только это улучшило бы впечатление в разы. б) похоже, есть проблемы с ударением для слов не в именительном падеже? в) Вообще много проблем с ударениями. Интересно, что слово "рука" в базе данных помечено вполне правильно, с ударением на 2-й слог, однако (SayText "Рука руку моет") говорит рУка. Довольно простое слово, чтобы ошибаться;) |
Сообщ.
#119
,
|
|
|
Цитата а) очень не хватает нормального словаря с буквой ё. Одно только это улучшило бы впечатление в разы. Словарь там нормальный, для всех вариантов с ё должен работать. Какое слово не читается? Цитата б) похоже, есть проблемы с ударением для слов не в именительном падеже? в) Вообще много проблем с ударениями. Словарь ударений нужно расширить. Для этого нужно обработать словарь Зализняка с aot.ru, вычленить оттуда часть речи и ударный слог. Если интересно, займитесь этим. Цитата Интересно, что слово "рука" в базе данных помечено вполне правильно, с ударением на 2-й слог, однако (SayText "Рука руку моет") говорит рУка. Довольно простое слово, чтобы ошибаться;) Это ошибка в разметке базы, в следующем выпуске подправим. Спасибо за тестирование. |
Сообщ.
#120
,
|
|
|
Цитата nsh @ Словарь там нормальный, для всех вариантов с ё должен работать. Какое слово не читается? Цитата Практически не встречал слов с ё, которые бы читались правильно. Примеры: допьешься Жигуленок сомкнет трех-четырех В словаре, вроде, буква ё встречается в основном в фамилиях. Скачал пару баз ёфикации, попробую применить к словарю. Кстати, кdict/msu_ru_nsh_stress.tree каким-либо образом генерируется из словаря или это абсолютно самостоятельная боевая единица? |
Сообщ.
#121
,
|
|
|
Цитата Практически не встречал слов с ё, которые бы читались правильно. Такие слова помечены в словаре fix-yo, всего их 640 штук. Собирал я их по словарю с yo (russian-ispell). Видимо, каких-то слов в этом словаре нет. Цитата допьешься Жигуленок сомкнет трех-четырех "четырех" там есть, например. Остальные нужно добавить. Цитата Кстати, кdict/msu_ru_nsh_stress.tree каким-либо образом генерируется из словаря или это абсолютно самостоятельная боевая единица? Генерируется из словаря. Это CART дерево для предсказания ударений. |
Сообщ.
#122
,
|
|
|
Пофиксил словарь по ёбазе отсюда http://vgiv.narod.ru/yo.html.
Как оказалось, на самом деле в словаре 7497 слов с безусловным ё. Попробую теперь возится с rusaot. |
Сообщ.
#123
,
|
|
|
Почему-то не дает скачать
Пишет Forbidden You don't have permission to access /festlang/msu_ru_nsh_clunits-0.5.tar.bz2 on this server. |
Сообщ.
#124
,
|
|
|
Возможно были проблемы с сервером. Попробуйте ещё раз, у меня всё нормально сейчас.
|
Сообщ.
#125
,
|
|
|
nsh, можно еще пару вопросов по словарю?
Я вот сейчас пытаюсь составить сравнительно полный словарь с помощью <a href="http://www.artint.ru/projects/frqlist.asp">таблицы наиболее частых слов</a> и rusaot (для генерации всех форм слов). Хотелось бы поточнее понять, что значит второе поле в словарной записи. Думал, что это просто указывает часть речи, но вроде не совсем это так. Вот например ("вдруг" wp (1)) wp -- это обозначение части речи, или все же некоторого способа произношения? Подобная штука встречается в словаре как у предлогов, так и у наречий. Насколько вообще сейчас используется поле для части речи? Добавлено И еще вопрос: результаты, так сказать, трудов, буде таковые окажутся, можно будет куда-нибудь скинуть? |
Сообщ.
#126
,
|
|
|
nsh, можно еще пару вопросов по словарю?
Цитата Я вот сейчас пытаюсь составить сравнительно полный словарь с помощью <a href="http://www.artint.ru/projects/frqlist.asp">таблицы наиболее частых слов</a> и rusaot (для генерации всех форм слов). таблица наиболее частных не нужна, нужно все слова из aot просто забирать. Там их не так много по сегодняшним размерам Цитата Хотелось бы поточнее понять, что значит второе поле в словарной записи. Думал, что это просто указывает часть речи, но вроде не совсем это так. Вот например ("вдруг" wp (1)) wp -- это обозначение части речи, или все же некоторого способа произношения? Подобная штука встречается в словаре как у предлогов, так и у наречий. Часть речи Цитата Насколько вообще сейчас используется поле для части речи? Используется при произношении и для интонации. Я для обработки вывода aot вот такой скрипт использовал: #!/usr/bin/python # -*- encoding: KOI8-R -*- import sys file = open ("data.wc", "r") vowels = "аоуиыэюяеё" trans_dict = { "вводн" : "prp", "г" : "v", "деепричастие" : "adv-v", "инфинитив" : "v", "межд" : "cc", "мс" : "pron", "мс-п" : "pron-p", "мс-предк" : "pron-r", "н" : "adv", "п" : "adj", "предк" : "adv", "предл" : "in", "причастие" : "adv-j", "с" : "n", "союз" : "cc", "част" : "aux", "числ" : "num", "числ-п" : "num-p"} def gen_stress (word): stress = ""; j = 0; for i in range (0, word.__len__()): if vowels.find(word[i]) >= 0: j = j + 1; if word[i] == "'": stress = str(j) + " " + stress; if word[i] == "ё": stress = str(j) + " " + stress; if word[i] == "`": stress = str(j) + " " + stress; if j == 1: stress = "" return stress.strip() stress_dict = {} pos_dict = {} #create dictionary of stress patterns while 1: line = file.readline () if line == "": break tokens = line.split(); pos = tokens[0] word = tokens[1] pure_word = word.replace ("'", "") stress = gen_stress (word) if stress != "": stress_dict [pure_word] = stress pos_dict [pure_word] = pos sorted_words = stress_dict.keys() sorted_words.sort() for word in sorted_words: print "(\"" + word + "\" " + trans_dict[pos_dict[word]] + " (" + stress_dict [word] + "))" и потом ещё аналогов английских предлогов туда намешал по-моему (set! english_guess_pos '((in of for in on that with by at from as if that against about before because if under after over into while without through new between among until per up down) (to to) (det the a an no some this that each another those every all any these both neither no many) (md will may would can could should must ought might) (cc and but or plus yet nor) (wp who what where how when) (pps her his their its our their its mine) (aux is am are was were has have had be) (punc "." "," ":" ";" "\"" "'" "(" "?" ")" "!") )) предлоги должны быть более чётко обозначены, потому что на интонацию сильно влияют |
Сообщ.
#127
,
|
|
|
Вообще, конечно, по-хорошему нужен не словарь, а дерево предсказания ударений и дерево предсказания частей речи. Формат исходных словарей rusaot весьма этому соответствует, насколько я понимаю. Лучше бы, конечно, строить дерево с конца слова, должно получится намного компактнее, особенно для частей речи, кроме того и угадывать будет неплохо. Как бы это еще запрограммировать на scheme...
|
Сообщ.
#128
,
|
|
|
Словарь и базы данных - наиболее точные способы фиксации языка, первичные данные. В словаре можно было бы указывать разбиение на слоги, части речи слогов, произношение, не укладывающееся в правила, и так далее. Всё это было бы полезно для синтеза в том числе.
Методы машинного обучения полезно использовать для многих вещей - сжатия словаря, интерполяции словаря, сглаживания словаря. Причём методы обучения могут быть любыми, например, для морфологии лучше join n-grams использовать. Для ударений - WFST. Если чего-то непонятно в lisp, спрашивайте. |
Сообщ.
#129
,
|
|
|
Моя старая дифонная база выложена здесь, если кому-то понадобится. Всего 1640 дифонов, но фонетический алфавит спроектирован очень плохо, особого смысла использовать такую базу нет:
http://www.mediafire.com/download.php?mwnr4tzgf3w |
Сообщ.
#130
,
|
|
|
Цитата nsh @ Спасибо за базу, попытался скачать, файл удален. С большим трудом скачал 04 версию, скопировал в 1.96, но выдается ошибка Цитата (voice_msu_ru_nsh_clunits) (SayText "Привет дружище") msu_ru_nsh_clunits LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* Пр ив ет # добавил Цитата (proclaim_voice 'msu_ru_nsh_clunits '((language russian) (gender male) (dialect moscow) (coding utf-8) (description "Russian festival voice."))) не помогло. Не могли бы вы сказать, в чем проблемма. |
Сообщ.
#131
,
|
|
|
Кодировка не UTF-8
|
Сообщ.
#132
,
|
|
|
Можно ли поинтересоваться. Насколько сложно в фестиваль добавить новый язык?
Если Вас не затруднит, то можно ли описать все действия, если брать во внимание, что всё нужно делать с нуля. Изучив эту тему, я так понимаю: * озвучиваем предложения * с phinxом распознаём звуки .lab * описываем правила, ударения * загружаем в festival Язык латгальский - намного проще русского, синтетический язык. Спрашиваю здесь, потому что вижу, что идёте этот путь уже с 2007 года. И я думаю Вам есть что рассказать. |
Сообщ.
#133
,
|
|
|
Цитата Можно ли поинтересоваться. Насколько сложно в фестиваль добавить новый язык? Не сложно. Студенты в CMU делают это в качество домашнего задания. Цитата Если Вас не затруднит, то можно ли описать все действия, если брать во внимание, что всё нужно делать с нуля. Изучив эту тему, я так понимаю: * озвучиваем предложения * с phinxом распознаём звуки .lab * описываем правила, ударения * загружаем в festival Примерно так. Порядок несколько другой. * Изучаем литературу. * Собираем набор предложений * Описываем правила, ударения * Записываем преложения * С sphinx размечаем звуки * Загружаем всё в festival Цитата Язык латгальский - намного проще русского, синтетический язык. Должно быть не сложно |
Сообщ.
#134
,
|
|
|
Спасибо, все заработало, хочу только сказать, что блокнот добавляет 3 байта в начале для UTF-8, от того и не работает, и команды festival для воспроизведения должны быть
(voice_msu_ru_nsh_clunits) (tts "text_to_say.txt" nil) готовый festival windows Извените за флуд, но это для САМЫХ тупых, таких как я А ещё версию голоса 05 скачать негде, ссылка не работает, готов разместить архив у себя . |
Сообщ.
#135
,
|
|
|
Не знаю, что у вас там не наботает. Ссылка на голос на сайте проекта http://developer.berlios.de/projects/festlang указана в первом сообщении этой темы
|
Сообщ.
#136
,
|
|
|
Gone
The requested resource /festlang/festival-win-1.96b.7z is no longer available on this server and there is no forwarding address. Please remove all references to this resource. проверено (22.01.10 в 13.00 (GMT+02:00) Minsk) проверено (22.01.10 в 17.00 (GMT+02:00) Minsk) |
Сообщ.
#137
,
|
|
|
кстати а как на счет capstral с русским ? будет работать ?
|
Сообщ.
#138
,
|
|
|
Здравствуйте nsh!
Спасибо за базу Скажите пожалуйста, ведется ли ее разработка в настоящее время? В рамках освоения кроссплатформенного программирования и библиотеки Qt, решил написать GUI для Festival. Необходимость простейшего GUI актуально уже исходя из использования UTF-8, т.к. эта кодировка усложняет использование компилированного Festival и вызывает вопросы у простых пользователей работающих под ОС Windows. В процессе разработки я столкнулся со следующим, символ ":" (и некоторые другие) при включении в текст, используемый для синтеза, приводит к сбою, т.е. синтез не производится. При просмотре msu_ru_nsh_lexicon.scm я заметил что есть следующие строки: строки из msu_ru_nsh_lexicon.scm ;; Basic punctuation must be in with nil pronunciation (lex.add.entry '("." punc nil)) (lex.add.entry '("'" punc nil)) (lex.add.entry '(":" punc nil)) (lex.add.entry '(";" punc nil)) (lex.add.entry '("," punc nil)) (lex.add.entry '("-" punc (((pau) 0)))) ;(lex.add.entry '("-" punc nil)) (lex.add.entry '("\"" punc nil)) (lex.add.entry '("`" punc nil)) (lex.add.entry '("?" punc nil)) (lex.add.entry '("!" punc nil)) (lex.add.entry '("--" punc (((pau) 0)))) Если в следующем блоке строки из msu_ru_nsh_lexicon.scm ( [ - ] = - ) ( [ "'" ] = - ) ( [ "+" ] = "+" ) Есть и еще несколько вопросов. 1. Подскажите пожалуйста, какой командой подключить в Festival произвольный словарь ударений (например на основе msu_ru_nsh_dict.scm), если это возможно? 2. Модуль голоса, который Вы разрабатываете, занимает приличный размер (порядка 200 MB). Вероятно это связано с хорошим качеством файлов записи речи, используемой для синтеза. Если эти файлы "пережать" с большей компрессией, будет ли работать Festival? Если да, может имеет смысл создать версию "лайт". 3. Синтезирование речи занимает некоторое время. Ясно, что оно зависит от характеристик ПК, а что может еще влиять на это? Спасибо за ответы. |
Сообщ.
#139
,
|
|
|
Цитата Спасибо за базу На здоровье Цитата Скажите пожалуйста, ведется ли ее разработка в настоящее время? Да Цитата В рамках освоения кроссплатформенного программирования и библиотеки Qt, решил написать GUI для Festival. Необходимость простейшего GUI актуально уже исходя из использования UTF-8, т.к. эта кодировка усложняет использование компилированного Festival и вызывает вопросы у простых пользователей работающих под ОС Windows. Пользователям Windows лучше сделать поддрежку SAPI, тогда с синтезатором смогут работать многочисленные читалки. Цитата В процессе разработки я столкнулся со следующим, символ ":" (и некоторые другие) при включении в текст, используемый для синтеза, приводит к сбою, т.е. синтез не производится. При просмотре msu_ru_nsh_lexicon.scm я заметил что есть следующие строки: строки из msu_ru_nsh_lexicon.scm 1. ;; Basic punctuation must be in with nil pronunciation 2. (lex.add.entry '("." punc nil)) 3. (lex.add.entry '("'" punc nil)) 4. (lex.add.entry '(":" punc nil)) 5. (lex.add.entry '(";" punc nil)) 6. (lex.add.entry '("," punc nil)) 7. (lex.add.entry '("-" punc (((pau) 0)))) 8. ;(lex.add.entry '("-" punc nil)) 9. (lex.add.entry '("\"" punc nil)) 10. (lex.add.entry '("`" punc nil)) 11. (lex.add.entry '("?" punc nil)) 12. (lex.add.entry '("!" punc nil)) 13. (lex.add.entry '("--" punc (((pau) 0)))) как я могу догадаться они "призывают" синтезатор никак не реагировать на перечисленные символы, либо организуют паузу. Однако,как я писал, символ ":" (и некоторые другие) приводят к сбою. Это для отдельно-стоящих символов. Цитата Если в следующем блоке строки из msu_ru_nsh_lexicon.scm 1. ( [ - ] = - ) 2. ( [ "'" ] = - ) 3. ( [ "+" ] = "+" ) добавить ( [ : ] = - ) проблема исчезает. Да, так нужно сделать. Или даже лучше было бы изменить код чтобы неизвестные символы по умолчанию опускались. Цитата 1. Подскажите пожалуйста, какой командой подключить в Festival произвольный словарь ударений (например на основе msu_ru_nsh_dict.scm), если это возможно? (lex.set.compile.file "file") Цитата 2. Модуль голоса, который Вы разрабатываете, занимает приличный размер (порядка 200 MB). Вероятно это связано с хорошим качеством файлов записи речи, используемой для синтеза. Если эти файлы "пережать" с большей компрессией, будет ли работать Festival? Если да, может имеет смысл создать версию "лайт". Размер базы можно значительно уменьшить. Это несложная работа, требующая некоторого опыта написания программ. Цитата 3. Синтезирование речи занимает некоторое время. Ясно, что оно зависит от характеристик ПК, а что может еще влиять на это? Неэффективная реализация алгоритмов синтеза. |
Сообщ.
#140
,
|
|
|
Спасибо за ответ!
Возник еще один вопрос. SAPI это синтезатор речи от MS, поддерживает ли он "голоса" от Festival? Мой выбор пал на Festival по той причине, что хотелось использовать движок независящий от ОС. Ясно, что в этом случае не целесообразно использовать продукт MS ориентированный на Windows. |
Сообщ.
#141
,
|
|
|
Цитата SAPI это синтезатор речи от MS, поддерживает ли он "голоса" от Festival? SAPI это не синтезатор, а программный интерфейс (Speech Application Programming Interface). Этот интерфейс поддерживают многие синтезаторы - родной от Microsoft и все другие. Если синтезатор поддерживает этот интерфейс, им можно пользоваться во всех программах Windows. Независимость от ОС тут не при чём. |
Сообщ.
#142
,
|
|
|
не работает чтение из Firefox с помощью плагина Read2Me
скачать сам плагин можно отсюда ftp://ftp.roedu.net/mirrors/mozdev.org/read2me/read2meFlite-1.7.2.xpi или отсюда http://read2me.mozdev.org LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* 0 G 0 ; L = 0 O # с английским плагин прекрасно пашет, если забить на качество произношения ожидается ли обновление? ArchLinux, FF3.6 |
Сообщ.
#143
,
|
|
|
> не работает чтение из Firefox с помощью плагина Read2Me
А при чём тут мы. Это в модуле Firefox ошибка, синтезатору посылается некорректный текст. |
Сообщ.
#144
,
|
|
|
Цитата candidatecandy @ не работает чтение из Firefox с помощью плагина Read2Me скачать сам плагин можно отсюда ftp://ftp.roedu.net/mirrors/mozdev.org/read2me/read2meFlite-1.7.2.xpi или отсюда http://read2me.mozdev.org LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* 0 G 0 ; L = 0 O # с английским плагин прекрасно пашет, если забить на качество произношения ;) ожидается ли обновление? ArchLinux, FF3.6 Здравствуйте candidatecandy! Скорее всего проблема состоит в том, что в тексте, который отправляется на чтение с русским голосом присутствуют символы, которые не определены в файле msu_ru_nsh_lexicon.scm. Можно попытаться отредактировать этот фаил так, как я писал несколько выше говоря о ":". |
Сообщ.
#145
,
|
|
|
Всем доброго дня!
Я немного в растерянности и не знаю куда обратиться за помощью, так что решил отписаться в этой теме =) В общем ситуация такая: есть задача сделать синтез речи казахского языка и есть не очень то хорошее знание английского языка. Что я смог: скомпилировал и настроил в Debian всё необходимое для синтеза речи, проверил на базе описанной в этом посте, всё работает прекрасно... Начал читать документацию по адресу http://festvox.org/bsv, но как то у меня совсем плохо с её пониманием... =( Четвертая глава там заканчивается сразу извлечением неких pitchmarks из wav файлов, которые как я понял уже разобраны по предложениям. А я как-то застрял сейчас на шаге "Ага, у меня есть mp3 с голосом!". В общем если не составит труда, прошу либо дать ссылку на что-либо более понятное, либо объяснить в двух словах почему я дурак и что именно я упустил из виду читая документацию. |
Сообщ.
#146
,
|
|
|
Здравствуйте nsh!
В блоке msu_ru_addenda файла msu_ru_nsh_lexicon.scm имеются строки ;;; Symbols ... (lex.add.entry '("*" nil ( ((u) 0) ((m n o) 1) ((zh i tt) 0) ))) (lex.add.entry '("%" nil ( ((p r o) 1) ((c e n t) 0) ))) Как я догадываюсь они должны заставить festival озвучить символы "*" и "%". Однако, когда я пишу "%1" или "%" получаю сообщение об ошибке LTS_Ruleset russian_downcase: no rule matches: LTS_Ruleset: # *here* % 1 # -=-=-=-=-=- EST Error -=-=-=-=-=- {FND} Feature Wave not defined -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Зато если вбить в блоке lts.ruleset russian_downcase следующую строку ( [ "*" ] = "*" ) festival начинает произносить отдельно стоящую "*" как "умножить". Но если этот знак встречается в последовательности символов, например, "*1" появляется ошибка. Из-за чего ошибка? |
Сообщ.
#147
,
|
|
|
Цитата Из-за чего ошибка? ( [ "*" ] = "*" ) Дальшето как эту звёздочку читать? Надо ( [ "*" ] = у м н о ж и т ь ) |
Сообщ.
#148
,
|
|
|
Цитата nsh @ Цитата Из-за чего ошибка? ( [ "*" ] = "*" ) Дальшето как эту звёздочку читать? Надо ( [ "*" ] = у м н о ж и т ь ) в том то и дело, что произношение прописано в msu_ru_addenda ;;; Symbols ... (lex.add.entry '("*" nil (((u) 0) ((m n o) 1) ((zh i tt) 0) ))) и если произнести через пробел "* 1" слышим "умножить адин", если без пробела - то ошибка. |
Сообщ.
#149
,
|
|
|
Цитата в том то и дело, что произношение прописано в msu_ru_addenda Это только для отдельностоящих слов. Символы внутри слова обрабатываются по правилам, а не по словарю. |
Сообщ.
#150
,
|
|
|
Цитата nsh @ Цитата в том то и дело, что произношение прописано в msu_ru_addenda Это только для отдельностоящих слов. Символы внутри слова обрабатываются по правилам, а не по словарю. Я правильно понимаю, что если правило для символа прописано только в "msu_ru_addenda" - то оно должно читаться для отдельно стоящего символа, а если прописано в "lex.add.entry" то читается во всех случаях: и при вхождении в состав слова, и будучи написано раздельно? Этот вопрос задаю от того, что пытаюсь сделать озвучку для символов, но не во всех случаях, а только когда он указан отдельно. Если же он входит в состав слова - то его не надо произносить. Как ни читаю описание Festival науку сею постичь не могу. |
Сообщ.
#151
,
|
|
|
Цитата Этот вопрос задаю от того, что пытаюсь сделать озвучку для символов, но не во всех случаях, а только когда он указан отдельно. Да, если символ отдельный, его нужно просто добавить в словарь Цитата сли же он входит в состав слова - то его не надо произносить. В этом случае для * ( [ "*" ] = ) |
Сообщ.
#152
,
|
|
|
Цитата nsh @ Цитата Этот вопрос задаю от того, что пытаюсь сделать озвучку для символов, но не во всех случаях, а только когда он указан отдельно. Да, если символ отдельный, его нужно просто добавить в словарь Цитата сли же он входит в состав слова - то его не надо произносить. В этом случае для * ( [ "*" ] = ) Вот что у меня происходит. Ставлю в Ubuntu Festival и голос из репозиториев. Затем произношу "*" и получаю ошибку. Затем я иду в msu_ru_nsh_lexicon.scm и вижу что есть следующий блок (define (msu_ru_addenda) "(msu_ru_addenda) Basic lexicon should (must ?) have basic letters, symbols and punctuation." ;;; Symbols ... (lex.add.entry '("*" nil (((u) 0) ((m n o) 1) ((zh i tt) 0) ))) Казалось бы должно звучать "умножить". Но отдельно стоящая звездочка приводит к ошибке. Далее, я добавляю в (lts.ruleset russian_downcase строки ( [ "*" ] = ) После чего запускаю Festival и прошу сказать отдельностоящую "*" ... и слышу нечто напоминающее "Найду"... Тоже произойдет если я добавлю ( [ "%" ] = ) ( [ "|" ] = ) и попрошу произнести. Впрочем, тоже самое происходит и в Windows XP при загруженном по вашей ссылке актуальных festival и голосе. Я не понимаю, откуда он выковыривает это "найду", или что он у меня там говорит. |
Сообщ.
#153
,
|
|
|
Хорошо, попробуйте так:
(lex.add.entry '("\*" nil ( ((u) 0) ((m n o) 1) ((zh i tt) 0) ))) (lts.ruleset russian_downcase ( ) .... ( [ "*" ] = "*" ) .... lts.ruleset msu_ru ( ;; Some exceptions ( [ "*" ] = ) но результат будет не очень, будет читать "один умножить два" По хорошему нужно добалять код в msu_ru_nsh_tokenizer.scm ((string-matches name "РФ") (list "эр+эф")) ((string-matches name "\\*") (list "умножить" "на")) Тогда будет читать правильно "умножить на два" |
Сообщ.
#154
,
|
|
|
Цитата nsh @ По хорошему нужно добалять код в msu_ru_nsh_tokenizer.scm ((string-matches name "РФ") (list "эр+эф")) ((string-matches name "\\*") (list "умножить" "на")) Тогда будет читать правильно "умножить на два" nsh Спасибо, попробую! |
Сообщ.
#155
,
|
|
|
Здравствуйте.
Скажите пожалуйста, а есть редакторы транскрипций кроме Wavesurfer? У меня не получается воспроизвести в нем звук ОС: Fedora Core 13 Оффтоп: а есть какие ни будь речевые синтезаторы, которые проговаривают фразы по специально размеченным предложениям? |
Сообщ.
#156
,
|
|
|
Цитата Скажите пожалуйста, а есть редакторы транскрипций кроме Wavesurfer? У меня не получается воспроизвести в нем звук ОС: Fedora Core 13 Загрузить модуль snd_pcm_oss (sudo modprobe snd_pcm_oss). Затем запускать wavesurfer через padsp padsp wavesurfer file.wav Цитата Оффтоп: а есть какие ни будь речевые синтезаторы, которые проговаривают фразы по специально размеченным предложениям? Festival, OpenMARY |
Сообщ.
#157
,
|
|
|
Оперативно спасибо
Решил эту проблему по другому, просто раскоментировал в файле /etc/modprobe.d/dist-oss.conf строчку с загрузкой модуля все заработало Посмотрел OpenMARY - поддержки русского языка нет, и написана она на яве, ну в принципе какой вопрос такой и ответ Вопрос, а джаббер конференция у этого проекта есть? |
Сообщ.
#158
,
|
|
|
Цитата Посмотрел OpenMARY - поддержки русского языка нет, и написана она на яве, ну в принципе какой вопрос такой и ответ Поддержка русского языка есть в ветке openmary-ru Цитата Вопрос, а джаббер конференция у этого проекта есть? нет |
Сообщ.
#159
,
|
|
|
а по какому принципу festival выбирает какую транскрипцию подставлять в каком-то конкретном случае? Например в ru_0001.wav диффоны (если не правильно поправьте) повторяются и точно такие же есть в других wav файлах
Цитата nsh @ Поддержка русского языка есть в ветке openmary-ru будьте добры - ссылку, на офф сайте не нашел P.S сделал конференцию festival_tts@conference.jabber.ru там намного удобнее общаться, все таки real time Правда если гуру туда не пойдут смысла не будет от этой конфы Добавлено Цитата nsh @ Ну как из базы выбираются куски с учётом двух функций - target cost (соответствие куска тому, что нужно синтезировать) и join cost (соответствие куска соседним кускам, выбранным из базы). Потом всё склеивается и получается синтезированный звук. нашел как это делается А где посмотреть как он русские слова разбивает на транскрипции? |
Сообщ.
#160
,
|
|
|
Цитата а по какому принципу festival выбирает какую транскрипцию подставлять в каком-то конкретном случае? Например в ru_0001.wav диффоны (если не правильно поправьте) повторяются и точно такие же есть в других wav файлах Транскрипция - текстовое представление звука, к выбору из базы она отношения не имеет. Тот кусок речи, который выбирается, называется элемент речи (unit). Среди всех элементов речи выбирается элемент с минимальной ценовой функцией, которая является суммой цены соответствия нужным характеристикой и цены соединения с уже выбранными элементами речи. Цитата будьте добры - ссылку, на офф сайте не нашел Сейчас сайт http://mary.opendfki.de/ лежит, ветка соовтетствующая в subversion, в /branches. Не думаю, что трудно найти Цитата А где посмотреть как он русские слова разбивает на транскрипции? На что разбивает? Транскрипция слова (его звуковое представление) получается из слова и словаря ударений. "разбивается" тут не применимо. Код, по слову определяющий транскрипцию находится в файле festvox/msu_ru_nsh_lexicon.scm.scm |
Сообщ.
#161
,
|
|
|
Цитата nsh @ На что разбивает? Транскрипция слова (его звуковое представление) получается из слова и словаря ударений. "разбивается" тут не применимо. Код, по слову определяющий транскрипцию находится в файле festvox/msu_ru_nsh_lexicon.scm.scm да, я не правильно выразился. Если я, правильно понял то, слово(текст) разбивается на аллофоны, т.е. текстовое представление звука, правильно? Аллофоны лежат в msu_ru_nsh_clunits/lab/ru_*.lab Можно ли как-то включить дебаг режим, чтоб видеть из каких файлов он берет эти куски речи, при составлении слова, чтоб можно было поправить в одном файле некоторые звуки? или хотя бы видеть из каких кусков речи состоит конкретное слово, чтоб поправить во всех файлах где эти элементы встречаются. Например слово "Офис" проговаривает как "Афис". |
Сообщ.
#162
,
|
|
|
Цитата Если я, правильно понял то, слово(текст) разбивается на аллофоны, т.е. текстовое представление звука, правильно? Не разбивается, а преобразуется в последовательность аллофонов. Цитата Аллофоны лежат в msu_ru_nsh_clunits/lab/ru_*.lab В файлах lab аллофоны не лежат, там лежит разметка базы на аллофоны. Цитата Можно ли как-то включить дебаг режим, чтоб видеть из каких файлов он берет эти куски речи, при составлении слова, чтоб можно было поправить в одном файле некоторые звуки? Раскомментировать '(clunits_debug 1). Цитата Например слово "Офис" проговаривает как "Афис". У Вас какая-то версия видимо очень старая. Попробуйте новую версию. |
Сообщ.
#163
,
|
|
|
Цитата nsh @ Не разбивается, а преобразуется в последовательность аллофонов. В файлах lab аллофоны не лежат, там лежит разметка базы на аллофоны. ну мы поняли друг друга Цитата nsh @ У Вас какая-то версия видимо очень старая. Попробуйте новую версию. версия у меня последняя msu_ru_nsh_clunits-0.5.tar.bz2 скачивал от сюда |
Сообщ.
#164
,
|
|
|
Цитата версия у меня последняя msu_ru_nsh_clunits-0.5.tar.bz2 скачивал от сюда Последняя версия находится здесь: http://developer.berlios.de/svn/?group_id=3272 |
Сообщ.
#165
,
|
|
|
Цитата nsh @ Последняя версия находится здесь: http://developer.berlios.de/svn/?group_id=3272 подскажите, а где тут русский голос лежит, в папке (root)/trunk/msu_ru_nsh_cg ? Не могли бы написать небольшую инструкцию как его установить в festival. |
Сообщ.
#166
,
|
|
|
Цитата подскажите, а где тут русский голос лежит, в папке (root)/trunk/msu_ru_nsh_cg ? Да Цитата Не могли бы написать небольшую инструкцию как его установить в festival. Скопировать файлы в нужное место |
Сообщ.
#167
,
|
|
|
Спасибо. Стало лучше.
|
Сообщ.
#168
,
|
|
|
Я пытаюсь добавить новый язык в систему festival (латгальский, я писал выше). Если интересно, то примерный алфавит - латинские буквы, несколько длинных гласных и мыгких согласных.
Пользуюсь я ubuntu 10.10. Установил festival-2.0.95-beta.tar.gz с компонентами и speech_tools-2.0.95-beta.tar.gz, которые скачал на сайте festvox.org; festvox-2.1-release.tar.gz тоже с того сайта. Прошёлся по мануалу который на том же сайте, признаюсь, понимаю довольно туго. В данный момент пытаюсь сделать синтез русского языка на примере ваших исходников. 5 предложений, что бы убедиться, что всё делаю правильно. В festvox-2.1-release.tar.gz/festvox/src/clustergen/HOWTO , делаю папки и первую команду ( /setup_cg ). Потом копирую из ваших исходников папку /festvox/ (msu_ru_nsh_*) в новый язык. Запускаю скрипт ( ./bin/do_build build_prompts ), потом (./bin/do_build label ). Вот этот скрипт вызывает ошибку /festvox/src/ehmm/bin/ehmm: not found /festvox/src/ehmm/bin/edec: not found Посмотрел и этих фаилов там нету. Что делать в такой ситуации? Одно, что в мануале сложно разобраться, так еще и файлов не хватает Было бы хорошо, если бы вы могли сделать небольшой туториал, как сделать свой язык (на примере русского). Я бы мог пожертвовать на создания этого туториала (~30$ на пиво). Понимаю что немного, но думаю заинтересованных будет больше чем я (чуть выше уже писали желающие). |
Сообщ.
#169
,
|
|
|
Цитата Вот этот скрипт вызывает ошибку /festvox/src/ehmm/bin/ehmm: not found /festvox/src/ehmm/bin/edec: not found FESTVOXDIR вы забыли установить export FESTVOXDIR=/home/user/projects/festvox Цитата Было бы хорошо, если бы вы могли сделать небольшой туториал, как сделать свой язык (на примере русского). Я бы мог пожертвовать на создания этого туториала (~30$ на пиво). Я готов Вам помочь в создании голоса, но это стоит значительно дороже $30. Либо разбирайтесь сами, задавайте вопросы, а мы уж как-нибудь поможем. |
Сообщ.
#170
,
|
|
|
FESTVOXDIR я установил, тех файлов просто нету.
Я не прошу создать мне новый язык, я думал статью, туториал, howto на примере русского языка (по пунктам какие действия предпринимались). Я же понимаю, что добавления нового языка стоит много, а так как таких людей почти нету, то это может стоит и очень много. Ну да ладно, похоже пожертвования оскорбили вас. |
Сообщ.
#171
,
|
|
|
Цитата FESTVOXDIR я установил, тех файлов просто нету. У меня есть. Вы, наверное, festvox не скомпилировали. Цитата Я не прошу создать мне новый язык, я думал статью, туториал, howto на примере русского языка (по пунктам какие действия предпринимались) Вот здесь всё написано шаг за шагом http://festvox.org/bsv/x3082.html |
Сообщ.
#172
,
|
|
|
возможно-ли на festival создать качество синтеза сравнимое с acapela alyona?
|
Сообщ.
#173
,
|
|
|
Цитата возможно-ли на festival создать качество синтеза сравнимое с acapela alyona? Да, это возможно |
Сообщ.
#174
,
|
|
|
всё, теперь я спасть нормально не смогу пока не скопирую движок алёны на festival
самое главное что в алёне всё прозрачно - перечислены все фонемы и можно синтезировать любую базу данных имея ваш опыт, я бы уже это сделал бы |
Сообщ.
#175
,
|
|
|
zamirЕсли у Вас получится, то памятник (маленький) Вам обеспечен.
Отсутствие хотябы более менее нормального русского голоса одна из проблем линукса в России. |
Сообщ.
#176
,
|
|
|
я в одиночку наверное не справлюсь, для меня язык фестиваля не знаком - а его надо знать что бы делать транскрипцию ...
пока только голосовую модель собрал примерно с тем же фонетическим набором что в acapela alyona - это понадобится для того что бы разметку сделать... даже если получится перетащить - базу синтеза нельзя будет выложить официально... p.s. однако неофициально преобразованная база lingvo прекрасно юзается под stardict |
Сообщ.
#177
,
|
|
|
Нужна помощь в сборке блока синтезатора русской речи
создания синтеза напрямую связано с использованием festival совместно с уже готовым блоком синтеза русской речи не понятно, как тогда создать блок который требует созданный блок если бы речь шла-бы только о скриптах я бы понял. Но папка trees явно создана не вручную... при запуске festival -b festvox/build_clunits.scm '(build_clunits "etc/uniphone.data")' требуется наличие полноценного синтезатора со всеми блоками включая папку trees и ей подобные откуда-ж их взять? Если говорить ближе к делу, то я хотел бы изменить текущий фонем в модуле синтеза msu_ru_nsh и собрать новый модуль синтеза. Как это можно сделать? |
Сообщ.
#178
,
|
|
|
Переписать скрипты фестиваля в festvox/*.scm
|
Сообщ.
#179
,
|
|
|
А можно при помощи pocket_sphinx получить расположение фонем?
или обязательно sphinx2 использовать и без вариантов? |
Сообщ.
#180
,
|
|
|
Цитата А можно при помощи pocket_sphinx получить расположение фонем? Можно Цитата или обязательно sphinx2 использовать и без вариантов? Нет, не обязательно. Лучше разметку с помощью HTS скриптов делать. |
Сообщ.
#181
,
|
|
|
Цитата Можно Скажите пожалуйста как при помощи pocket_sphinx можно получить расположение фонем Цитата Лучше разметку с помощью HTS скриптов делать. Я успел попробовать. Качество вашей разметки около 98%. Качество разметки при помощи HTS скриптов около 89%. Первое что заменил безударная "а" стала звучать как ударная. |
Сообщ.
#182
,
|
|
|
Николай, а файл all.desc вы вручную создали или его можно как-то сгенерить?
|
Сообщ.
#183
,
|
|
|
Цитата Скажите пожалуйста как при помощи pocket_sphinx можно получить расположение фонем Написать программу, используя функции из ps_alignment.h. Пример - pocketsphinx/test/unit/test_state_align.c Цитата Я успел попробовать. Качество вашей разметки около 98%. Качество разметки при помощи HTS скриптов около 89%. Первое что заменил безударная "а" стала звучать как ударная. Я не совсем уверен как в процентах измерять качество разметки. Мне кажется, что если всё сделать правильно, качество должно быть гораздо лучше. Вопросы для htk вы написали? Цитата Николай, а файл all.desc вы вручную создали или его можно как-то сгенерить? Этот файл нужно создавать вручную. Можно написать скрипт. По поводу меток в новом festvox реализована суперская технология по улучшению меток, называется подвижка меток (move_label). Скачать новый festvox можно здесь: http://www.speech.cs.cmu.edu/15-492/assignments/tts/packed2010/festvox-2.4-current.tar.gz Описание технологии здесь http://www.cs.cmu.edu/~awb/papers/icassp2009/0003785.pdf |
Сообщ.
#184
,
|
|
|
Цитата Написать программу, используя функции из ps_alignment.h. Пример - pocketsphinx/test/unit/test_state_align.c при помощи sphinx3_align это можно сделать параметр -phsegdir мне этого достаточно будет, если результат правильный получится можно ведь sphinx использовать хотя бы для начальной разметки вместо использования команды festival -b festvox/build_clunits.scm '(build_prompts "etc/txt.done.data")' ? Цитата Мне кажется, что если всё сделать правильно, качество должно быть гораздо лучше. Вопросы для htk вы написали? весь исходный материал ваш. ничего не писал. где-нибудь описана эта процедура? Цитата Этот файл нужно создавать вручную. Можно написать скрипт. Николай, у вас нет желания попробовать вот такую транскрипцию http://ru.wikipedia.org/wiki/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%BE%D0%BD%D0%B5%D1%82%D0%B8%D0%BA%D0%B0 ? Цитата По поводу меток в новом festvox реализована суперская технология по улучшению меток, называется подвижка меток (move_label). Скачать новый festvox можно здесь: Именно его я использую. Весьма долго подбирались метки - но подобрались более менее точно, ваша разметка немного лучше на мой взгляд получилась. |
Сообщ.
#185
,
|
|
|
Цитата при помощи sphinx3_align это можно сделать параметр -phsegdir Да это можно Цитата мне этого достаточно будет, если результат правильный получится можно ведь sphinx использовать хотя бы для начальной разметки вместо использования команды festival -b festvox/build_clunits.scm '(build_prompts "etc/txt.done.data")' build_prompts делает разметки, там специальный этап build_labels. Есть команда label_sphinx, она всё настраивает для sphinxtrain, затем можно запускать sphinxtrain и делать метки. Цитата Николай, у вас нет желания попробовать вот такую транскрипцию http://ru.wikipedia.org/wiki/%D0%A0%D1%83%...%B8%D0%BA%D0%B0 ? Желание есть, основная проблема в отсуствии времени. Если честно, ничего особенного в вики нет, уж лучше первоисточник взять - Бондарко Цитата весь исходный материал ваш. ничего не писал. где-нибудь описана эта процедура? Надо просто проконтролировать, что все файлы соотвествуют руссокому языку. Цитата Именно его я использую. Весьма долго подбирались метки - но подобрались более менее точно, ваша разметка немного лучше на мой взгляд получилась. Интересно, что там получилось. Выложите, пожалуйста, метки и образцы синтеза. |
Сообщ.
#186
,
|
|
|
Цитата Интересно, что там получилось. Выложите, пожалуйста, метки и образцы синтеза. вот тут лежат метки: ваши, hts, sphinx для сравнения + скрипт который позволяет получить метки через sphinx3_align http://z1.prolink.ru/sphinx/lab4festival.tar.gz Модуль синтеза я испортил 10 раз. сейчас буду возвращать ваши скрипты, соберу модуль с метками hts и приложу образцы синтеза. Добавлено Цитата уж лучше первоисточник взять - Бондарко Там небольшие различия с точки зрения звуков образованных гласными буквами Я проводил аналогии с фонемами в alyona от acapella В целом всё тоже самое 1я колонка - фонема в Алёне 2я колонка - пример употребления фонемы из Алёны 3я колонка - то как я обозначаю эту фонему в sphinx https://github.com/zamiron/ru4sphinx/blob/master/text2dict/dict2transcript.pl # А - Альт - aa # l - Ыкать - yy # о - Он - oo # u - Угол - uu # E - Этот - ee # 9 - нЁс - jo # e - Есть - je # { - пЯть - ja # } - лЮк - ju # i - идИ - ii # V - зАвод - a # @ - мОлоко - ay # U - Укол - u # Y - новуЮ - uj - также после мягких в безударном положении # I - Этаж - y # $ - тЕперь - i бюрократ # b' Y r V k r A1 t bb uj r a k r aa t т.е. появляются новые фонемы образованные ударными звуками: ja jo je ju ur - 2я степень редукции У исчезает, на смену приходит uj - Ю в безударном положении ae e i - становятся одной фонемой i - смягчающие, редуцированные 2й степенью редукции гласные е я и там ещё есть некоторые звуки образованные двумя согласными согласными, но пока это лишнее по-моему... # dZ' - Начдив # dZ - ДЖем # tS - имиДЖ # tts - дц # dz - цз я готов сгенерить словарь ударений на полтора миллиона слов. но из-за этого festival будет дольше грузиться и больше кушать памяти. |
Сообщ.
#187
,
|
|
|
Цитата Выложите, пожалуйста, метки и образцы синтеза. а вот образец синтеза после того как я получил метки через hts https://z1.prolink.ru/sphinx/nsh_hts.wav Цитата два дня и две ночи бродили волчица и одноглазый около индейского посёлка |
Сообщ.
#188
,
|
|
|
Упростил и исправил ошибки в коде транскрипции
теперь получение фонем от гласных ещё проще # В начале слова $testword=~s/(^ )[ао]/$1a/g; # Первая степень редукции $testword=~s/ (zh|sh) [о](( ($ALL_SONAR))* \+($STARTSYL))/ $1 y$2/g; $testword=~s/ [ао](( ($ALL_SONAR))* \+($STARTSYL))/ a$1/g; # Все остальные безударные гласные $testword=~s/ [ао]/ ay/g; $testword=~s/ [у]/ u/g; $testword=~s/ [иея]/ i/g; $testword=~s/ [ыэ]/ y/g; $testword=~s/ [ю]/ uj/g; https://github.com/zamiron/ru4sphinx/blob/master/text2dict/dict2transcript.pl#L640 Николай, если создадите git репозитарий, то я смогу помочь создать новый транскриптор для festival |
Сообщ.
#189
,
|
|
|
Цитата Николай, если создадите git репозитарий, то я смогу помочь создать новый транскриптор для festival Надеюсь, отсутствие git не помешает вам заняться транскрипторами. |
Сообщ.
#190
,
|
|
|
пытаюсь реализовать редукцию А и О первой степени
замысле простой. если гласная после А или О ударная - значит степень редукции пеервая (AO а о) (ALLSONAR б в г д з к л м н п р с т ф х ж ш ц й ч щ b v g d z k l m n p r s t f h zh sh c j ch sch bb vv gg dd zz kk ll mm nn pp rr ss tt ff hh ) ( [ AO ] "+" = a ) ( [ AO ] ALLSONAR "+" = a ) ( [ AO ] ALLSONAR ALLSONAR "+" = a ) ( [ AO ] ALLSONAR ALLSONAR ALLSONAR "+" = a ) не работает. а именно в таком варианте все безударные А и О становятся первой степени редукции кто-нибудь знает в чём причина и как это исправить? может кто-нибудь знает как regexp в данном случаи использовать можно? |
Сообщ.
#191
,
|
|
|
Редукцию легче на postlex стадии
|
Сообщ.
#192
,
|
|
|
почему вы считаете что это легче?
в у вас после (define (msu_ru::postlex_reduce_vowel utt) много кода в котором я ничего (мягко говоря) не понимаю (отключил его пока) на perl у меня одна строчка $testword=~s/ [ао](( ($ALL_SONAR))* \+($STARTSYL))/ a$1/g; работает великолепно мне проще реализовать LTS даже если это будет 4 строки ( [ AO ] "+" = a ) ( [ AO ] ALLSONAR "+" = a ) ( [ AO ] ALLSONAR ALLSONAR "+" = a ) ( [ AO ] ALLSONAR ALLSONAR ALLSONAR "+" = a ) но это не работает, и я не могу понять почему логика простая что я не понимаю? |
Сообщ.
#193
,
|
|
|
Цитата что я не понимаю? "+" как в регулярных выражениях даёт совпадение с любым символом: http://www.cstr.ed.ac.uk/projects/festival/manual/festival_13.html#SEC43 |
Сообщ.
#194
,
|
|
|
я пробовал слэшом экранировать
не получилось заменил на "`" так работает спасибо, теперь хоть понятно что регулярные выражения всё таки есть и они работают |
Сообщ.
#195
,
|
|
|
s1 - чёрный цифербл+ат разм+еренно выплёвывал ядовито-кр+асные ч+исла
s2 - с+он навал+ился н+а мен+я, +и погруз+ил в т+ёплую гл+убь земл+и (фраза из обучающего словаря) Как можно улучшить качество синтеза? по файлу msu_ru_nsh_phoneset.scm не проконсультируете? ;;; stressed vowels (ii + l 5 1 - 0 0 0 0) (yy + l 5 3 - 0 0 0 0) (uu + l 5 5 + 0 0 0 0) (ee + l 3 1 - 0 0 0 0) (oo + l 3 5 + 0 0 0 0) (aa + l 1 3 - 0 0 0 0) (ju + l 5 5 + 0 0 0 0) (je + l 3 1 - 0 0 0 0) (jo + l 3 5 + 0 0 0 0) (ja + l 1 3 - 0 0 0 0) что означают записи после фонем? Прикреплённый файлs1.wav (146,62 Кбайт, скачиваний: 731) Прикреплённый файлs2.wav (150,6 Кбайт, скачиваний: 694) |
Сообщ.
#196
,
|
|
|
Цитата Как можно улучшить качество синтеза? В файле описания голоса включить отладку '(clunits_debug 1)) Посмотреть, откуда берутся сегменты для синтеза, посмотреть качество и разметку сегментов. Если нужно - переразметить базу. Цитата по файлу msu_ru_nsh_phoneset.scm не проконсультируете? Признаки аллофонов кодируются в таблице - высота, глубина, округлённость, мягкость и так далее. http://www.cstr.ed.ac.uk/projects/festival/manual/festival_12.html#SEC38 |
Сообщ.
#197
,
|
|
|
я оказывается в move_label не разобрался
метки которые я выкладывал ранее получены через ehmm что бы улучшить качество разметки надо запустить ./bin/do_clustergen move_label ? а в какой момент надо запускать? мой сборочный файл: ./bin/do_build build_prompts 1>./01_prompts.log ./bin/do_build label 1>./02_label.log 2>&1 (festival/utts) ./bin/do_build build_utts 1>./03_build_utts.log 2>&1 ./bin/do_clustergen f0 1>./04_f0.log 2>&1 ./bin/do_clustergen mcep 1>./05_mcep.log 2>&1 ./bin/do_clustergen voicing 1>./06_voicing.log 2>&1 ./bin/do_clustergen combine_coeffs_v 1>./07_combine_coeffs_v.log 2>&1 #./bin/do_clustergen move_label 1>./08_move_label.log 2>&1 ./bin/do_clustergen generate_statenames 1>./09_generate_statenames.log 2>&1 ./bin/do_clustergen cluster 1>./10_cluster.log 2>&1 ./bin/do_clustergen dur 1>./11_dur.log 2>&1 мне показалось что запускать надо после того как синтерзатор будет полностью собран но тогда есть вопросы - почему требуется полная сборка синтерзатора и почему этот механизм нельзя использоваться в модели clunits ? |
Сообщ.
#198
,
|
|
|
Цитата мне показалось что запускать надо после того как синтерзатор будет полностью собран Да, потому что при оптимизации разметок используется синтез. После того, как оптимизация завершена, нужно ещё раз собрать голос. Цитата но тогда есть вопросы - почему требуется полная сборка синтерзатора и почему этот механизм нельзя использоваться в модели clunits ? Критерий используемый при оптимизации - улучшение качества синтеза. То есть метка двигается, затем измеряется качество синтеза и измеряется улучшение. Этот метод относится к модным сейчас дискриминативным методам обучения. |
Сообщ.
#199
,
|
|
|
не могу никак собрать модель _cg
во время выполнения ./bin/do_clustergen cluster возникает много ошибок типа: festival/feats/pau_1.feats: bad value 4 in field R:mcep_link.parent.R:segstate.parent.p.ph_vheight vector 4059 festival/feats/pau_1.feats: bad value 4 in field R:mcep_link.parent.R:segstate.parent.p.ph_vheight vector 4060 festival/feats/pau_1.feats: bad value 5 in field R:mcep_link.parent.R:segstate.parent.p.ph_vheight vector 4136 festival/feats/pau_1.feats: bad value 5 in field R:mcep_link.parent.R:segstate.parent.n.ph_vheight vector 4221 и заканчивается всё так: $ESTDIR/bin/wagon -track_start 1 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_1.feats' -test 'festival/feats/pa u_1.feats' -balance 0 -track 'festival/disttabs/pau_1.mcep' -stop 50 -output 'festival/trees/pau_1_mcep.tree' BACKTRACE: 0: (f (car l2)) 1: (cons (f (car l2)) r) 2: (set! r (cons (f (car l2)) r)) 3: (while l2 (set! r (cons (f (car l2)) r)) (set! l2 (cdr l2))) 4: (mapcar (lambda (x) (...)) (caar tree)) 5: (clustergen::dump_tree_vectors tree rawtrackfd) 6: (set! tree (clustergen::dump_tree_vectors tree rawtrackfd)) 7: (f (car l2)) 8: (cons (f (car l2)) r) 9: (set! r (cons (f (car l2)) r)) 10: (while l2 (set! r (cons (f (car l2)) r)) (set! l2 (cdr l2))) 11: (mapcar (lambda (unit) (...) ...) unittypes) 12: (if cg:multimodel (begin (format t "Building multimodels: static ") (set! cg::cluster_feats "-track_feats 1-25") ...) ...) 13: (build_clustergen "etc/txt.done.data") поначалу стоял festival 1.96B думал из-за этого сейчас установил festival: Festival Speech Synthesis System: 2.1:release November 2010 и снова запустил ./bin/do_clustergen cluster ошибки теже самые есть предположения из-за чего это происходит и как это исправить? |
Сообщ.
#200
,
|
|
|
Цитата festival/feats/pau_1.feats: bad value 4 in field R:mcep_link.parent.R:segstate.parent.p.ph_vheight vector 4059 Нужно отредактировать список возможных значений признаков в различных файлах описания вроде festival/clunits/mcep.desc, f0.desc и так далее. По умолчанию многие признаки принимают значения 1,2,3. В русском голосе используются значения 1,2,3,4,5. |
Сообщ.
#201
,
|
|
|
но ведь файлы festival/clunits/mcep.desc, f0.desc генерятся автоматически, нельзя как-нибудь сделать так что бы они сразу автоматически правильно сгенерились?
у меня не многие - у меня похоже все фонемы только в трёх значениях перечислены в фалах .desc так как мне всё равно для теста, скажите пожалуйста где можно подправить количество признаков с 5 до 3 что бы всё автоматом собралось без лишних хлопот? |
Сообщ.
#202
,
|
|
|
Цитата ведь файлы festival/clunits/mcep.desc, f0.desc генерятся автоматически, значит исправления нужно вносить в исходные файлы. Цитата у меня не многие - у меня похоже все фонемы только в трёх значениях перечислены в фалах .desc Не фонемы, а значения признаков. Не в трёх значениях, а значения 1 2 3. Было: ( R:segstate.parent.p.ph_vfront 0 1 2 3 ) стало ( R:segstate.parent.p.ph_vfront 0 1 2 3 4 5 ) В данном случае признак vfront из таблицы признаков может принимать значения 1,2,3,4,5 а не 1,2,3. Цитата так как мне всё равно для теста, скажите пожалуйста где можно подправить количество признаков с 5 до 3 что бы всё автоматом собралось без лишних хлопот? Значения признаков указаны в таблице: (a + s 2 4 - 0 0 0 0) ;; a and o reduced (e + s 3 2 - 0 0 0 0) ;; e in open unstessed syllable (i + s 4 2 - 0 0 0 0) ;; i reduced (y + s 4 3 - 0 0 0 0) ;; y reduced (u + s 5 5 + 0 0 0 0) ;; u unstressed В ней и нужно убрать 4 и 5. |
Сообщ.
#203
,
|
|
|
во, теперь понятно
пока я разбирался переделал градацию подъёма и положение языка с 5ти значной шкалы на 3х значную пока собирается вроде эта классификация так же как и в sphinx влияет только на качество разметки ehmm ? |
Сообщ.
#204
,
|
|
|
Цитата эта классификация так же как и в sphinx влияет только на качество разметки ehmm ? Классы используются для выбора сегментов для синтеза и влияют на его качество. |
Сообщ.
#205
,
|
|
|
всё равно не собирается на том же этапе
ошибки касающиеся состояний исчезли но вылезает BACKTRACE не сталкивались с таким? $ESTDIR/bin/wagon -track_start 1 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/i_2.feats' -test 'festival/feats/i_2.feats' -balance 0 -track 'festival/disttabs/i_2.mcep' -stop 50 Dataset of 16347 vectors of 62 parameters from: festival/feats/i_2.feats Dataset of 16347 vectors of 62 parameters from: festival/feats/i_2.feats RMSE 0.5147 Correlation is 0.9432 Mean (abs) Error 0.1377 (0.4959) Dataset of 25266 vectors of 62 parameters from: festival/feats/i_3.feats Dataset of 25266 vectors of 62 parameters from: festival/feats/i_3.feats RMSE 0.5442 Correlation is 0.8805 Mean (abs) Error 0.1442 (0.5248) Dataset of 30432 vectors of 62 parameters from: festival/feats/pau_1.feats Dataset of 30432 vectors of 62 parameters from: festival/feats/pau_1.feats RMSE 0.0875 Correlation is 0.9035 Mean (abs) Error 0.0638 (0.0599) Dataset of 8292 vectors of 62 parameters from: festival/feats/pau_2.feats Dataset of 8292 vectors of 62 parameters from: festival/feats/pau_2.feats RMSE 0.1207 Correlation is 0.9661 Mean (abs) Error 0.0769 (0.0930) Dataset of 17248 vectors of 62 parameters from: festival/feats/pau_3.feats Dataset of 17248 vectors of 62 parameters from: festival/feats/pau_3.feats RMSE 0.2080 Correlation is 0.8451 Mean (abs) Error 0.0862 (0.1893) SIOD ERROR: not a number : -nan closing a file left open: festival/trees/msu_ru_nsh_mcep.rawparams closing a file left open: festival/trees/msu_ru_nsh_mcep.tree -output 'festival/trees/i_2_mcep.tree' Clustergen mcep tree build on: i_3 $ESTDIR/bin/wagon -track_start 1 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/i_3.feats' -test 'festival/feats/i_3.feats' -balance 0 -track 'festival/disttabs/i_3.mcep' -stop 50 -output 'festival/trees/i_3_mcep.tree' Clustergen mcep tree build on: pau_1 $ESTDIR/bin/wagon -track_start 1 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_1.feats' -test 'festival/feats/pau_1.feats' -balance 0 -track 'festival/disttabs/pau_1.mcep' -stop 50 -output 'festival/trees/pau_1_mcep.tree' Clustergen mcep tree build on: pau_2 $ESTDIR/bin/wagon -track_start 1 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_2.feats' -test 'festival/feats/pau_2.feats' -balance 0 -track 'festival/disttabs/pau_2.mcep' -stop 50 -output 'festival/trees/pau_2_mcep.tree' Clustergen mcep tree build on: pau_3 $ESTDIR/bin/wagon -track_start 1 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_3.feats' -test 'festival/feats/pau_3.feats' -balance 0 -track 'festival/disttabs/pau_3.mcep' -stop 50 -output 'festival/trees/pau_3_mcep.tree' BACKTRACE: 0: (f (car l2)) 1: (cons (f (car l2)) r) 2: (set! r (cons (f (car l2)) r)) 3: (while l2 (set! r (cons (f (car l2)) r)) (set! l2 (cdr l2))) 4: (mapcar (lambda (x) (...)) (caar tree)) 5: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) 6: (clustergen::dump_tree_vectors (car (cdr tree)) rawtrackfd) 7: (clustergen::dump_tree_vectors (car (cdr tree)) rawtrackfd) 8: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) 9: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) 10: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) 11: (clustergen::dump_tree_vectors (car (cdr tree)) rawtrackfd) 12: (clustergen::dump_tree_vectors (car (cdr tree)) rawtrackfd) 13: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) 14: (clustergen::dump_tree_vectors tree rawtrackfd) 15: (set! tree (clustergen::dump_tree_vectors tree rawtrackfd)) 16: (f (car l2)) 17: (cons (f (car l2)) r) 18: (set! r (cons (f (car l2)) r)) 19: (while l2 (set! r (cons (f (car l2)) r)) (set! l2 (cdr l2))) 20: (mapcar (lambda (unit) (...) ...) unittypes) 21: (if cg:multimodel (begin (format t "Building multimodels: static ") (set! cg::cluster_feats "-track_feats 1-25") ...) ...) 22: (build_clustergen "etc/txt.done.data") |
Сообщ.
#206
,
|
|
|
Сталкивался, почему не сталкивался. Ещё памяти надо добавить в стек (--heap)
|
Сообщ.
#207
,
|
|
|
Спасибо.
На сколько я понял Цитата if [ $1 = "cluster" ] then $ESTDIR/../festival/bin/festival --heap 10000000 -b $CLUSTERGENDIR/clustergen_build.scm festvox/build_clunits.scm festvox/${FV_VOICENAME}_cg.scm '(build_clustergen "'$PROMPTFILE'")' exit 0 fi меняю на Цитата if [ $1 = "cluster" ] then $ESTDIR/../festival/bin/festival --heap 20000000 -b $CLUSTERGENDIR/clustergen_build.scm festvox/build_clunits.scm festvox/${FV_VOICENAME}_cg.scm '(build_clustergen "'$PROMPTFILE'")' exit 0 fi сейчас попробую |
Сообщ.
#208
,
|
|
|
Не помогло
Увеличивал значение по умолчанию в 2 и в 5 раз Таже самая ошибка в том же самом месте Добавлено может это сообщение возникает из-за того что в вашем файле msu_ru_nsh_phrasing.scm указано (set_backtrace t) ? Добавлено если не считать это ошибкой то вроеде всё собрается но синтерзатор не работ на вывод ошибок выводится: Цитата Attempt to access frame 159 of 0 frame track Attempt to access frame 123 of 0 frame track Attempt to access frame 123 of 0 frame track Attempt to access frame 123 of 0 frame track Attempt to access frame 181 of 0 frame track Attempt to access frame 181 of 0 frame track Attempt to access frame 181 of 0 frame track Attempt to access frame 0 of 0 frame track Attempt to access frame 0 of 0 frame track Attempt to access frame 0 of 0 frame track Attempt to access frame 0 of 0 frame track Attempt to access frame 0 of 0 frame track на стандартный вывод: Цитата ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for pau_3 ClusterGen: can't find cluster tree for d_1 ClusterGen: can't find cluster tree for d_1 ClusterGen: can't find cluster tree for d_1 ClusterGen: can't find cluster tree for d_1 |
Сообщ.
#209
,
|
|
|
Кучу надо прямо к вагону добавлять:
Цитата $ESTDIR/bin/wagon -track_start 1 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/i_2.feats' -test 'festival/feats/i_2.feats' -balance 0 -track 'festival/disttabs/i_2.mcep' -stop 50 Dataset of 16347 vectors of 62 parameters from: festival/feats/i_2.feats Цитата SIOD ERROR: not a number : -nan closing a file left open: festival/trees/msu_ru_nsh_mcep.rawparams У вас тут ещё и nan затесался. Это значит что файлы коэффициентов были неправильно рассчитаны. Либо отметки периодов (pitchmarks) съехали, либо были в записях промежутки абсолютной тишины. Надо проверить значения коэффициентов во всех mcep файлах. |
Сообщ.
#210
,
|
|
|
нашёл nan в festival/trees/k_1_mcep.tree (встречается в одном файле один раз)
как исправить? ./bin/make_pm_fix pm/*.pm а затем ./bin/do_clustergen mcep ? |
Сообщ.
#211
,
|
|
|
не выходит...
Dataset of 8292 vectors of 62 parameters from: festival/feats/pau_2.feats RMSE 0.1207 Correlation is 0.9661 Mean (abs) Error 0.0769 (0.0930) Dataset of 17248 vectors of 62 parameters from: festival/feats/pau_3.feats Dataset of 17248 vectors of 62 parameters from: festival/feats/pau_3.feats RMSE 0.2080 Correlation is 0.8451 Mean (abs) Error 0.0862 (0.1893) SIOD ERROR: not a number : -nan R/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/aa_1.feats' -test 'festival/feats/aa_1.feats' -balance 0 -track 'festival/disttabs/aa_1.mcep' -stop 50 -output 'festiva l/trees/aa_1_mcep.tree' Clustergen mcep tree build on: aa_2 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/aa_2.feats' -test 'festival/feats/aa_2.feats' -balance 0 -track 'festival/disttabs/aa_2.mcep' -stop 50 -output 'f estival/trees/aa_2_mcep.tree' Clustergen mcep tree build on: aa_3 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/aa_3.feats' -test 'festival/feats/aa_3.feats' -balance 0 -track 'festival/disttabs/aa_3.mcep' -stop 50 -output 'f estival/trees/aa_3_mcep.tree' Clustergen mcep tree build on: mm_1 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/mm_1.feats' -test 'festival/feats/mm_1.feats' -balance 0 -track 'festival/disttabs/mm_1.mcep' -stop 50 -output 'f estival/trees/mm_1_mcep.tree' Clustergen mcep tree build on: mm_2 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/mm_2.feats' -test 'festival/feats/mm_2.feats' -balance 0 -track 'festival/disttabs/mm_2.mcep' -stop 50 -output 'f estival/trees/mm_2_mcep.tree' Clustergen mcep tree build on: mm_3 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/mm_3.feats' -test 'festival/feats/mm_3.feats' -balance 0 -track 'festival/disttabs/mm_3.mcep' -stop 50 -output 'f estival/trees/mm_3_mcep.tree' Clustergen mcep tree build on: i_1 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/i_1.feats' -test 'festival/feats/i_1.feats' -balance 0 -track 'festival/disttabs/i_1.mcep' -stop 50 -output 'fest ival/trees/i_1_mcep.tree' Clustergen mcep tree build on: i_2 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/i_2.feats' -test 'festival/feats/i_2.feats' -balance 0 -track 'festival/disttabs/i_2.mcep' -stop 50 -output 'fest ival/trees/i_2_mcep.tree' Clustergen mcep tree build on: i_3 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/i_3.feats' -test 'festival/feats/i_3.feats' -balance 0 -track 'festival/disttabs/i_3.mcep' -stop 50 -output 'fest ival/trees/i_3_mcep.tree' Clustergen mcep tree build on: pau_1 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_1.feats' -test 'festival/feats/pau_1.feats' -balance 0 -track 'festival/disttabs/pau_1.mcep' -stop 50 -output 'festival/trees/pau_1_mcep.tree' Clustergen mcep tree build on: pau_2 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_2.feats' -test 'festival/feats/pau_2.feats' -balance 0 -track 'festival/disttabs/pau_2.mcep' -stop 50 -output 'festival/trees/pau_2_mcep.tree' Clustergen mcep tree build on: pau_3 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_3.feats' -test 'festival/feats/pau_3.feats' -balance 0 -track 'festival/disttabs/pau_3.mcep' -stop 50 -output 'festival/trees/pau_3_mcep.tree' BACKTRACE: 0: (f (car l2)) 1: (cons (f (car l2)) r) 2: (set! r (cons (f (car l2)) r)) 3: (while l2 (set! r (cons (f (car l2)) r)) (set! l2 (cdr l2))) 4: (mapcar (lambda (x) (...)) (caar tree)) 5: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) 6: (clustergen::dump_tree_vectors (car (cdr tree)) rawtrackfd) 7: (clustergen::dump_tree_vectors (car (cdr tree)) rawtrackfd) 8: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) closing a file left open: festival/trees/msu_ru_nsh_mcep.rawparams closing a file left open: festival/trees/msu_ru_nsh_mcep.tree rawtrackfd) 9: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) 10: (clustergen::dump_tree_vectors (car (cdr (cdr tree))) rawtrackfd) |
Сообщ.
#212
,
|
|
|
Цитата нашёл nan в festival/trees/k_1_mcep.tree (встречается в одном файле один раз) Nan нужно искать внутри mcep файлов, а не в деревьях. В деревьях они как следствие. После того, как nan найден проще всего проблемный файл из базы выкинуть, удалив из etc/txt.done.data |
Сообщ.
#213
,
|
|
|
я понимаю, но все остальные mcep файлы бинарные...
ищу в файлах *mcep* последовательность nan нашёл следующее: находится последовательность в *.mcep в папках mcep_deltas и mcep большей частью это бинарный файл Цитата .nan>..).p [.e.NaN=... .*<nan..pU K...NaN.. ..U.NAn... .=.l.<naN...`= .^Z>nAN..dw ^E.\.^T=nAn.=XY ^W8>nAN..j ...؛=nan=.^^ =..мNAn=.|<= P..nAn??um ...NaN>ڗ. .^G^>NAN=M.^@ ...naN.,|b= =#^.;nAN<*.@ ./.<NAN=.P. ;. ֘.nan.9C.. =^U.\=naN< D.nAn..* .;Nan.U^ ..U>Nan=t.. |..<nan=.^U ¶^B.nan.E ^[>nAn. T..>NaN. это больше похоже на случайность... с какой последовательностью стоит удалить файл? p.s. взял метки sphinx - пересобираю всё по новой, завтра скажу собралось или нет. |
Сообщ.
#214
,
|
|
|
Цитата я понимаю, но все остальные mcep файлы бинарные... В файлах mcep лежат числа. Перевести их в текстовую форму можно с помощью ch_track из speech_tools. |
Сообщ.
#215
,
|
|
|
[mcep]# ch_track *.mcep |grep -i nan
[mcep_deltas]# ch_track *.mcep |grep -i nan после сборки с метками sphinx таких файлов нет но требуются файлы lab/ru_0006.sl которые sphinx не создаёт Цитата ru_0001 Processing Cannot open file lab/ru_0001.sl as tokenstream load_relation: can't open relation input file lab/ru_0001.sl utt.load.relation: loading from "lab/ru_0001.sl" failed пробую дальше... |
Сообщ.
#216
,
|
|
|
Для clustergen нужна разметка уровня состояний HMM, а не уровня аллофонов. Разметка от sphinx3 не подойдёт, только ehmm.
|
Сообщ.
#217
,
|
|
|
Нигде nan не обнаружил
# ch_track ./mcep/*.mcep |grep -i na # ch_track ./mcep_deltas/*.mcep |grep -i na # ch_track ./ccoefs/*.mcep |grep -i na # ch_track ./festival/disttabs/*.mcep |grep -i na значений -0.00000 и 0.00000 в файлах полно ((((111.878 -nan) (0.984285 0.426654) (1.32527 0.18907) (-0.289974 0.173128) пробовал искать в ./mcep/*.mcep значения 111.878 0.984285 - не нашёл запускаю ./bin/do_clustergen cluster 1>./10_cluster.log 2>&1 полный лог http://z1.prolink.ru/sphinx/10_cluster.log у вас есть ещё идеи? |
Сообщ.
#218
,
|
|
|
регулярными выражениями проверил что везде только цифры, каких либо левых символов нет
|
Сообщ.
#219
,
|
|
|
удалил ./mcep/*.mcep начиная с 500
собралось голос через чур дрожащим получился ещё пока разирался нашёл вот такие проблемные места у себя из-за выравнивания материала при помощи sphinx # cat ./txt.done.data.save |grep ' к -- ' ( ru_0455 "-- з+а воскр+есной -- литург+ией -- он+а подним+ала глаз+а ат мол+итвенника -- +и м+еж с+изых клуб+ов л+адана -- вознос+ившихся к -- к+уполу -- в+идела кр+откий л+ик -- д+евы мар+ии" ) ( ru_0684 "к+ак пробуд+ились вн+овь люб+овь -- над+ежды -- +и мол+итва В груд+и -- к -- кот+орой приж+ался мал+ютка" ) это могло повлиять? без файла ru_0684 я пересобирать пробовал - результат тот же с файлом ru_0455 оно сейчас собралось Прикреплённый файлcg_test.rar (126,69 Кбайт, скачиваний: 377) |
Сообщ.
#220
,
|
|
|
move_label пыхтит, вроде даже что-то понемногу двигается, но на каждом этапе в логах появляются ошибки
Цитата IOD ERROR: could not open file etc/txt.done.data.train Pass 10 find MCDs SIOD ERROR: could not open file etc/txt.done.data.test cat: etc/txt.done.data.test: Нет такого файла или каталога awk: cmd. line:1: fatal: division by zero attempted cat: etc/txt.done.data.test: Нет такого файла или каталога awk: cmd. line:1: fatal: division by zero attempted из которых можно предположить что для работы этого алгоритма надо что-то ещё... не просветите по этому вопросу? |
Сообщ.
#221
,
|
|
|
С помощью скрипта traintest нужно разбить файл базы etc/txt.done.data на две части - etc/txt.done.data.train и etc/txt.done.data.test. На первой части голос будет тренироваться, на второй тестироваться.
|
Сообщ.
#222
,
|
|
|
это трындец...
нашёл файл из-за которого вылезал nan методом перебора - удалил его разбивил файлы при помощи traintest при запуске move_label модель не собирается переразбил - первая модель собралась, но при перемещении меток снова возникает nan и модель не собирается... |
Сообщ.
#223
,
|
|
|
Видимо настало время подумать, почему появляется nan.
|
Сообщ.
#224
,
|
|
|
я думал...
появляется только в фонеме k в mcep файлах nan не обнаружен выше я написал что есть последовательности "к кот+орой", "к к+уполу" в которых "к к" может являться одной фонемой, хотя транскриптор выводит две фонемы, но прикол в том что ни одно из этих предложений не явилось причиной почему я не мог создать кластер синтез что бы думать глубже или правильнее у меня не хватает знаний и опыта. а сбор этого добра занимает много времени... у меня уже один диск вышел из строя (хорошо ещё что softraid настроен) пока я этими многочисленными сборками занимаюсь... |
Сообщ.
#225
,
|
|
|
Так дам действительно должна быть только одна k.
Видимо, надо на стадии postlex надо двойную k просто убирать и пересобрать всё. |
Сообщ.
#226
,
|
|
|
Ситуация немного улучшилась, но ошибки прослеживаются (начиная с pass 1), но куда капать теперь у меня даже предположений нет
Цитата stival/disttabs/pau_2.mcep' -stop 50 -output 'festival/trees/pau_2_mcep.tree' Clustergen mcep tree build on: pau_3 $ESTDIR/bin/wagon -track_start 1 -heap 10000000 -vertex_output mean -desc festival/clunits/mcep.desc -data 'festival/feats/pau_3.feats' -test 'festival/feats/pau_3.feats' -balance 0 -track 'fe stival/disttabs/pau_3.mcep' -stop 50 -output 'festival/trees/pau_3_mcep.tree' 160 unittypes as 14968 subunittypes dumped Tree models and vector params dumped Pass 5 find MCDs -=-=-=-=-=- EST Error -=-=-=-=-=- error:(class 1929) determinant <= 0, det = 0.000000 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Error reading ESPS file test/cgp5/ru_0010.mcep Error reading ESPS file test/cgp5/ru_0010.mcep /daemon/festival/festvox/src/clustergen/track_diff_f0: line 89: [: 26: unary operator expected /daemon/festival/festvox/src/clustergen/track_diff_f0: line 95: [: 1958: unary operator expected |
Сообщ.
#227
,
|
|
|
Ну do_move_label вызывает cg_test. Дальше надо в cg_test добавить "set -x" чтобы видеть вызываемые команды.
Найти команду, которая завершается неудачей. Видимо, festival не может синтезировать какое-то предложение из тестовых. Что-то в голосе было накручено. Возможно, можно будет убрать одно из тестовых предложений. |
Сообщ.
#228
,
|
|
|
Цитата на стадии postlex надо двойную k просто убирать в postlex я ничего понять не могу а в LTS оказывается мои правила не работают... ( # [ к ] # * к = ) и остальные тоже значит... ;; SURD также включает конец слова - # ( [ б ] # * SURD = p ) ( [ в ] # * SURD = f ) ( [ г ] # * SURD = k ) ( [ д ] # * SURD = t ) ( [ з ] # * SURD = s ) ( [ ж ] # * SURD = sh ) ( [ б ] ь SURD = pp ) ( [ в ] ь SURD = ff ) ( [ г ] ь SURD = kk ) ( [ д ] ь SURD = tt ) ( [ з ] ь SURD = ss ) ( [ п ] # * RINGING = b ) ( [ ф ] # * RINGING = v ) ( [ к ] # * RINGING = g ) ( [ т ] # * RINGING = d ) ( [ ш ] # * RINGING = zh ) ( [ с ] # * RINGING = z ) жаль.. |
Сообщ.
#229
,
|
|
|
Цитата в postlex я ничего понять не могу Если что-то непонятно, всегда можно спросить. На стадии postlex описываются преобразования последовательностей звуков после соединения слов в предложения. На стадии lts - звуки внутри слова. По Scheme можно найти какое-нибудь простое введение, это не сложнее, чем perl. |
Сообщ.
#230
,
|
|
|
Вроде разобрался немного...
|
Сообщ.
#231
,
|
|
|
Цитата nsh @ Дальше надо в cg_test добавить "set -x" чтобы видеть вызываемые команды. Найти команду, которая завершается неудачей. Цитата + /daemon/festival/speech_tools/../festival/bin/festival --heap 20000000 -b festvox/msu_ru_nsh_cg.scm /daemon/festival/festvox/src/clustergen/clustergen_build.scm '(begin (voice_msu_ru_nsh_cg) (setq cg::generate_resynth_waves nil) (ClusterGen_test_resynth "etc/txt.done.data.test" "test/cgp1"))' -=-=-=-=-=- EST Error -=-=-=-=-=- error:(class 1929) determinant <= 0, det = 0.000000 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
Сообщ.
#232
,
|
|
|
cg::generate_resynth_waves в свою очередь вызывает команду cg_resynth, нужно посмотреть, что на входе этой команды, что на выходе:
(define (cg_wave_synth_external utt) ;; before we had it built-in to Festival (let ((trackname (make_tmp_filename)) (wavename (make_tmp_filename)) ) (track.save (utt.feat utt "param_track") trackname "est") (system (format nil "$FESTVOXDIR/src/clustergen/cg_resynth %s %s" Добавлено Сам по себе голос-то работает? Если он тестовые записи синтезировать не может, может там что-то не так? |
Сообщ.
#233
,
|
|
|
сам по себе голос после первоначальной сборки работает
после двиганья меток - не работает я пробовал убрать строку "(setq cg::generate_resynth_waves nil)" - ошибка таже самая я прервал передвижение меток и запустил: Цитата $FESTVOXDIR/src/clustergen/cg_test mcdf0 cgp0 ${PROMPTFILE}.test >ml/mcd.0 ошибка также самая, несмотря на то, что ранее (сразу после сборки модели) этот шаг отрабатывал коректно: Цитата 160 unittypes as 15338 subunittypes dumped Tree models and vector params dumped Pass 0 find MCDs Pass # #moves +ve -ve MCD std F0 std pass 0 0 0 0 4.631 1.914 13.984 13.619 Starting Pass 1 Pass 1 moving labels после этого я перезапустил ./bin/do_clustergen move_label и заметил что теперь ошибка вылезат на нулевом этапе Цитата 160 unittypes as 15132 subunittypes dumped Tree models and vector params dumped Pass 0 find MCDs + /daemon/festival/speech_tools/../festival/bin/festival --heap 20000000 -b festvox/msu_ru_nsh_cg.scm /daemon/festival/festvox/src/clustergen/clustergen_build.scm '(begin (voice_msu_ru_nsh_cg) (setq cg::generate_resynth_waves nil) (ClusterGen_test_resynth "etc/txt.done.data.test" "test/cgp0"))' -=-=-=-=-=- EST Error -=-=-=-=-=- error:(class 1929) determinant <= 0, det = 0.000000 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + exit 0 Добавлено извиняюсь это какой-то мой косяк Цитата # echo "В рук+е +он держ+ал кон+ец" | text2wave -eval '(voice_msu_ru_nsh_cg)' > cg_test1.wav Цитата # echo "В рук+е +он держ+ал -- кон+ец" | text2wave -eval '(voice_msu_ru_nsh_cg)' > cg_test1.wav Int Target General: targets out of order пытаюсь разобраться |
Сообщ.
#234
,
|
|
|
если перед pau в postlex удалить фонему, то получится последовательность "0 pau" которая приводит к ошибке Int Target General: targets out of order
после исправления этой ошибки (путём замены фонемы на pau вместо её удаления ), запуск: $FESTVOXDIR/src/clustergen/cg_test mcdf0 cgp0 ${PROMPTFILE}.test >ml/mcd.0 всё равно заканчивается тойже ошибкой что и раньше, так что не в этом наверное проблема пересобираю всё поновой... но так как и с таким косячком pass0 проходил нормально, думаю проблема не в этом... |
Сообщ.
#235
,
|
|
|
собралась модель
прикладываю пример синтеза фразы из словаря тоесть после сборки модели - синтерзатор работает теперь запускаю move_label... Прикреплённый файлcg_ru_0037_2.wav.zip (187,12 Кбайт, скачиваний: 404) |
Сообщ.
#236
,
|
|
|
синтезатор работает даже после pass1
в cg_resynth выставлен set -x и из логов видно что этот скрипт никогда не запускался как бычно pass0 прошёл Цитата 60 unittypes as 15338 subunittypes dumped Tree models and vector params dumped Pass 0 find MCDs Pass # #moves +ve -ve MCD std F0 std pass 0 0 0 0 4.994 2.148 15.725 15.179 Starting Pass 1 Pass 1 moving labels начиная с pass1 ошибки Цитата 160 unittypes as 15071 subunittypes dumped Tree models and vector params dumped Pass 1 find MCDs -=-=-=-=-=- EST Error -=-=-=-=-=- error:(class 1929) determinant <= 0, det = 0.000000 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Error reading ESPS file test/cgp1/ru_0010.mcep |
Сообщ.
#237
,
|
|
|
возвращаю оригинальные метки
запускаю Цитата ./bin/do_clustergen build_utts ${PROMPTFILE} ./bin/do_clustergen f0 ${PROMPTFILE} ./bin/do_clustergen combine_coeffs_v ${PROMPTFILE} ./bin/do_clustergen cluster ${PROMPTFILE}.train синтрезатор собрался запускаю Цитата /daemon/festival/speech_tools/../festival/bin/festival --heap 20000000 -b festvox/msu_ru_nsh_cg.scm /daemon/festival/festvox/src/clustergen/clustergen_build.scm '(begin (voice_msu_ru_nsh_cg) (setq cg::generate_resynth_waves nil) (ClusterGen_test_resynth "etc/txt.done.data.test" "test/cgp0"))' всё отработало корректно беру модель из папки ml/model1/* копирую в папку festival/trees/* запускаю Цитата /daemon/festival/speech_tools/../festival/bin/festival --heap 20000000 -b festvox/msu_ru_nsh_cg.scm /daemon/festival/festvox/src/clustergen/clustergen_build.scm '(begin (voice_msu_ru_nsh_cg) (setq cg::generate_resynth_waves nil) (ClusterGen_test_resynth "etc/txt.done.data.test" "test/cgp1"))' всё отработало корректно это подтвеждает что модели собираются рабочими после выполнения этой команды в папке test/cgp1 наконец-то появились mcep файлы запускаю $FESTVOXDIR/src/clustergen/cg_test mcdf0 cgp1 ${PROMPTFILE}.test >ml/mcd.1 что бы проверить на верника ошибок нет Добавлено беру метки lab1 выполняю Цитата ./bin/do_clustergen build_utts ${PROMPTFILE} после этого модель не работает Цитата $FESTVOXDIR/src/clustergen/cg_test mcdf0 cgp1 ${PROMPTFILE}.test CG test_resynth ru_0010 -=-=-=-=-=- EST Error -=-=-=-=-=- error:(class 1929) determinant <= 0, det = 0.000000 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- файлы модели Цитата msu_ru_nsh_f0.tree msu_ru_nsh_mcep.params msu_ru_nsh_mcep.rawparams msu_ru_nsh_mcep.tree не изменились по дате изменились только файлы в папке festival/utts Добавлено если убрать папку utts вознимат ошибка: Цитата CG test_resynth ru_0010 Cannot open file festival/utts/ru_0010.utt as tokenstream load_utt: can't open utterance input file festival/utts/ru_0010.utt utt.load: loading from "festival/utts/ru_0010.utt" failed Добавлено возращаю метки lab0 выполняю Цитата ./bin/do_clustergen build_utts ${PROMPTFILE} после этого $FESTVOXDIR/src/clustergen/cg_test mcdf0 cgp1 ${PROMPTFILE}.test ошибок не выдаёт |
Сообщ.
#238
,
|
|
|
на сколько корректным будет работа move_label если я закоментирую выполнение ./bin/do_clustergen build_utts ${PROMPTFILE} ?
|
Сообщ.
#239
,
|
|
|
вот тут MCD на английских диалектах около 5
http://www.cs.cmu.edu/~awb/papers/icassp2009/0003785.pdf у меня около 4-х с половиной вопряки указаниям я добавил в train модель фразы из тестового словаря Pass # #moves +ve -ve MCD std F0 std pass 0 0 0 0 4.382 1.569 14.312 14.893 pass 1 48860 24377 24483 4.416 1.607 14.088 13.486 pass 2 28410 14498 13912 4.426 1.618 14.114 13.516 pass 3 22343 11442 10901 4.443 1.643 14.154 13.554 pass 4 19881 10173 9708 4.444 1.639 14.158 13.559 pass 5 18485 9561 8924 4.457 1.667 14.199 13.601 pass 6 17704 9061 8643 4.455 1.665 14.194 13.592 pass 7 17178 8850 8328 4.464 1.680 14.222 13.611 pass 8 16701 8568 8133 4.459 1.677 14.210 13.601 pass 9 16385 8434 7951 4.468 1.696 14.232 13.617 MCD только ростёт... Думаю нет смысла пытаться улучшить модель если в английских диалектах MCD и того выше? p.s. Если кто-то общается с разработчиками festvox скажите им что do_move_label select работает не корректно из за того что sort не умеет работать с плавающей запятой bestpass=`sort --key=6 -n ml/summary | awk '{if (NR==1) print $2}'` и сортировки по 6-му полю не будет |
Сообщ.
#240
,
|
|
|
Цитата вопряки указаниям я добавил в train модель фразы из тестового словаря Это не очень хорошо. Возможно, стоит взять тестовое множество поменьше, но отделить его от тренировочного. Например, начать с двух речевых отрезков. Цитата Думаю нет смысла пытаться улучшить модель если в английских диалектах MCD и того выше? Важно не абсолютное значение, а относительное. Улучшать дальше не стоит, разве что тестовое множество поменять на другое. |
Сообщ.
#241
,
|
|
|
прикладываю результат своих трудов:
http://z1.prolink.ru/sphinx/msu_ru_nsh_cg.tar.gz метки: http://z1.prolink.ru/sphinx/labs.tar.gz clunits у меня звучит не намного лучше чем у вас, поэтому не прикладываю (при желании модель быстро собирается с использованием меток) |
Сообщ.
#242
,
|
|
|
Здравствуйте nsh!
Скажите пожалуйста, в файле msu_ru_nsh_dict.scm можно только указать ударение и часть речи: ("докладах" n (2)) или каким-то образом можно указать фонетику: умножить v ( ((u) 0) ((m n o) 1) ((zh i tt) 0) )? |
Сообщ.
#243
,
|
|
|
Цитата или каким-то образом можно указать фонетику: На данный момент нельзя, в списке задач такая задача есть: http://festlang.berlios.de/docu/doku.php?id=rustasks |
Сообщ.
#244
,
|
|
|
Цитата nsh @ Цитата или каким-то образом можно указать фонетику: На данный момент нельзя, в списке задач такая задача есть: http://festlang.berlios.de/docu/doku.php?id=rustasks прочел список задач, есть пункт Цитата Дополнить словарь (уровень - простой) Необходимо переконвертировать парадигму Зализняка в словарь в формате dic/msu_ru_nsh.dict. А именно, для каждого слова получить часть речи и номер ударного слога. В конце организовать слова в нужный формат: (”слово” n 1) что значит, что “слово” это существительное и ударение падает на первый слог Я сделал программку которая на основе фестивал синтезирует из текста речь. http://sourceforge.net/projects/golos/ есть еще один проект, уже более приспособлен к озвучке текстов http://sourceforge.net/projects/menestrel/ На основе первой, можно организовать редактирования словаря. Раз в данный момент нет возможности записывать полную транскрипцию слова, то можно организовать добавление записи "слово,часть речи и номер ударного слога". По большому счету, такая функция будет не особенно полезна, если не будет простой возможности делиться новыми "записями" словаря. Значит, надо организовать обмен такими записями, и их модерирование или добавление в словарь по рейтингу - т.е. например несколько человек прослушали звучание (учесть минимальное количество человек) согласно новой "записи" и оценили, например, по пятибальной шкале. Если какая - то запись удостаивается рейтинга в 5 звезд, она автоматически добавляется в словарь. Серверную часть с рейтингом в одиночку пожалуй я не осилю. Однако можно попробовать воспользоваться svn-хранилищем (например на базе sourceforge.net). На базе svn будет удобно организовать синхронизацию основного словаря со словарями пользователей и таким образом его расширять. |
Сообщ.
#245
,
|
|
|
звучание слова почти полностью зависит от ударного гласного
https://github.com/zamiron/ru4sphinx/tree/master/text2dict здесь есть словарь из полутора миллиона слов с ударением там же есть скрипт который с вероятностью 90% правильно высталяет ударение - вероятность можно увеличить, но я пока смысла в этом не вижу если запарсить три миллиона слов в festival будет не очень весело поэтому надо выделить оптимальные маски и проставлять ударение автоматически в идеале можно научиться делать морфологический разбор слов, при таком разборе проще автоматически проставлять ударение для этого что бы это сделать в festival надо уметь програмить на lisp (вроде этот язык там используется) Есть некоторое колличество слов в которых ударение плавающее: - возле окна' - о'кна выходят во двор поэтому некоторые ударения надо выставлять исходя из контекста предложения |
Сообщ.
#246
,
|
|
|
Словарь нужно составлять, более того, словари уже есть хорошие, к той же Говорилке, можно их взять за основу.
http://1956.ru/speech2/index.html да и к голосам под Windows словари тоже есть. Я только не совсем понял, что мешает уважаемому GrandPeter этим заняться, нужно просто взять и сделать. |
Сообщ.
#247
,
|
|
|
Если делать словарь, или программу, то такую чтобы потом никто не вязался по поводу авторского права. Поэтому я не рвусь конвертировать словари от лингво и т.п.
zamir и nsh: если эти словари, о которых идет речь, конвертировать в словарь фестиваля, это не нарушит ни чьих авторских прав? zamir Вы пробовали скрипт, который выставляет ударение в русском голосе для Festival? для nsh: "Я только не совсем понял, что мешает уважаемому GrandPeter этим заняться, нужно просто взять и сделать." Я хочу сделать программу, которая позволит пользователю дополнять существующий словарь нужными им "записями" и делиться наработками с обществом. Создать словарь и пользоваться им одному в свое удовольствие мне не интересно. Возможно, когда удасться сделать часть задуманного и расписанного чуть выше, мне удасться дополнить словарь, и автоматом пользователи моего и совместимого с ним проекта получат эти наработки. я несколько лет слежу за эволюцией msu_ru_nsh_clunits но отмечаю с сожалением, что она идет медленно, а то и вовсе в последний год остановилась. надеюсь я ошибаюсь. |
Сообщ.
#248
,
|
|
|
Цитата если эти словари, о которых идет речь, конвертировать в словарь фестиваля, это не нарушит ни чьих авторских прав? то что выложено по ссылке в git не нарушает ничьи права если вы пропарсите то что выложил yandex на предмет ударения и никому об этом скажите это тоже не нарушит не чьи права мне кажется нет смысла заморачиваться с правами если есть желание что-то сделать и отдать безвозмездно как я уже писал пересинтезированный голос алёны для festival можно распространять через торренты и никто от этого не пострадает Цитата zamir Вы пробовали скрипт, который выставляет ударение в русском голосе для Festival? мой скрипт написан на perl. движёк фестиваля на lisp. я не знаю языка lisp. Всё что я смог сделать на этом языке выложено в этой теме чуть выше. посути это переработанный движёк nsh, в нём иная фонетическая база. поправьте если я ошибаюсь но Николай не выкладывал синтезатор который не использует wav файлы (живой голос) для синтеза, соответсенно я выложил имеено движёк который делает "синтетический" (другого слова не подобрал) синтез. Что называется преимущества в весе базы, недостатки слышны невооружённым ухом |
Сообщ.
#249
,
|
|
|
zamir:
здесь есть словарь из полутора миллиона слов с ударением есть скрипт который с вероятностью 90% правильно высталяет ударение скрипт с ударением это dict2transcript.pl в разделе "Автоударение"? Да я так понимаю кто желает доработать голос в festival сталкиваются с тем, что там используется lisp и отсутствует русскоязычная литература( Попробую переварить этот скрипт, если пойму вставлю в свою программку, если не возражаете. |
Сообщ.
#250
,
|
|
|
dict2transcript.pl не совсем то
я похоже не залил эти скрипты сейчас залью Добавлено залил accent_train.pl - обучение accent_test.pl - тестирование правильности расстановки ударения |
Сообщ.
#251
,
|
|
|
Цитата Один из старейших хостингов открытых проектов Berlios (Berlin Open Source), пользующийся популярностью среди европейского сообщества разработчиков, объявил о скором закрытии. Инфраструктура проекта перестанет работать с 1 января 2012 года. Николай у вас там русский синтезатор лежит. Можете сообщить ссылку куда вы планируете его перезалить? |
Сообщ.
#252
,
|
|
|
Пока не знаю, не думал над этим.
|
Сообщ.
#253
,
|
|
|
Подскажите, а для flite существуют русские голоса? Проект вообще еще развивается?
|
Сообщ.
#254
,
|
|
|
Проект развивается семимильными шагами. Продолжение можно скачать тут:
https://github.com/Olga-Yakovleva/RHVoice Есть HTS голоса, драйвер для SAPI для Windows, улучшения ударений и много чего хорошего. Есть женский голос, исходную базу для него можно скачать тут: http://tiflo.info/rhvoice/ |
Сообщ.
#255
,
|
|
|
Цитата nsh @ Проект развивается семимильными шагами. А известно, что нужно сделать, чтобы избавиться от "металлического" звука при синтезе? Я бы мог заняться если наведете на задачи |
Сообщ.
#256
,
|
|
|
Цитата А известно, что нужно сделать, чтобы избавиться от "металлического" звука при синтезе? Известно, сделать голос для openmary из тех же данных: https://github.com/marytts/marytts/wiki/New-Language-Support Цитата Я бы мог заняться если наведете на задачи Займитесь |
Сообщ.
#257
,
|
|
|
Цитата nsh @ Известно, сделать голос для openmary из тех же данных: https://github.com/marytts/marytts/wiki/New-Language-Support На странице http://mary.dfki.de:59125/ есть демо и для русского языка, но там звучание не отличается от festival. Проблема в голосе? |
Сообщ.
#258
,
|
|
|
Цитата Проблема в голосе? Какая проблема? Опишите проблему подробнее, опишите свои действия, что Вас беспокоит? Какой текст Вы пытаетесь синтезировать, что получается, что ожидается, что не нравится в результате. Любую проблему можно решить, нужно просто предоставить полную информацию. |
Сообщ.
#259
,
|
|
|
Цитата nsh @ Какая проблема? Опишите проблему подробнее, опишите свои действия, что Вас беспокоит? Какой текст Вы пытаетесь синтезировать, что получается, что ожидается, что не нравится в результате. Синтезирую тестовую фразу "Добро пожаловать в мир синтеза речи!". Проверяю для openmary http://mary.dfki.de:59125/, проверяю для nuance http://www.nuance.com/vocalizer5/flash/index.html . Во втором случае качество речи ощутимо лучше, более плавное и натуральное. Каким образом достигается лучший результат? Новый голос для openmary решит задачу? |
Сообщ.
#260
,
|
|
|
Цитата Каким образом достигается лучший результат? Собирается более полная база, реализуются более точные алгоритмы. В этом примере, кстати, openmary неправильно ударения ставит. С правильными ударениями результат будет гораздо лучше. Цитата Новый голос для openmary решит задачу? Конечно |
Сообщ.
#261
,
|
|
|
Если будет время соберу с текущим голосом более качественный синтез для festival
Только я вот точно не разберусь как этом языке (LISP?) сделать автоударение, поэтому ударение придётся вручную проставлять для синтеза (что многим не понравится) Кто-нубудь сможет автоударение прикрутить? festval может вызывать внешнюю програму для простановки ударения? |
Сообщ.
#262
,
|
|
|
И так. Нашлось время на эксперимент.
Сначала мне показалось что результат не такой уже впечатляющий, но я сравнил с http://mary.dfki.de:59125/ - разница вполне ощутимая, хоть и не идеально конечно. (мне кажется нужно некоторое сглаживание - prosody modification?) Цитата Однажды, в студёную зимнюю пору, Я из лесу вышел; был сильный мороз. Гляжу, поднимается медленно в гору Лошадка, везущая хворосту воз. И, шествуя важно, в спокойствии чинном, Лошадку ведёт под уздцы мужичок. В больших сапогах, в полушубке овчинном, В больших рукавицах... а сам с ноготок! результат синтеза: http://z1.prolink.ru/sphinx/fest_demo_nekrasov.wav Цитата Маленький мальчик нашёл пулемёт, больше в деревне никто не живёт. результат синтеза: http://z1.prolink.ru/sphinx/fest_demo_tinyboy.wav ударения проставлял в ручную Скрытый текст М+аленький м+альчик наш+ёл пулем+ёт, б+ольше в дер+евне никт+о не жив+ёт. Одн+ажды, в студ+ёную з+имнюю п+ору, +Я +иЗ лесу в+ышел; б+ыл с+ильный мор+оз. Гляж+у, подним+ается м+едленно в г+ору Лош+адка, вез+ущая хв+оросту в+оз. +И, ш+ествуя в+ажно, в спок+ойствии ч+инном, Лош+адку вед+ёт под уздц+ы мужич+ок. В больш+их сапог+ах, в полуш+убке овч+инном, В больш+их рукав+ицах... а с+ам с ногот+ок! как проставить ударение в http://mary.dfki.de:59125/ - не разобрался. Николай, подскажите? Николай, поможете реализовать автопростановку ударения в festival ? |
Сообщ.
#263
,
|
|
|
Здравствуйте! Подскажите пожалуйста, как собрать русскую базу для синтезатора flite? Из чего ее вообще собирать? Интересует именно flite, т.к. очень компактен и работает сейчас на недорогом микроконтроллере.
|
Сообщ.
#264
,
|
|
|
TTS для микроконтроллёров
Думаю Руслан в этой теме сейчас лучше всего разбирается. Мне кажется начинать надо всё равно с громоздкого festvox |
Сообщ.
#265
,
|
|
|
Хаха, вот и зациклились, вы на меня, я на вас
На самом деле МК STM32F10х освоены, сделал уже несколько девайсов разных, есть даже голосовой модуль, но пока на MP3. В планах забить в МК Flite, но пока даже примерно не знаю когда этим займусь. |
Сообщ.
#266
,
|
|
|
Ну дык я рассуждаю так:
если ты уже синтез к микроконтроллерам прикручиваешь, то на x86 архитектуре синтез тобой уже реализован с достаточно приемлимом качеством =) Я не прав? |
Сообщ.
#267
,
|
|
|
На x86 выгоднее пользоваться готовыми решениями. Коммерческими. Например, тот же cepstral даёт офигенное качество.
|
Сообщ.
#268
,
|
|
|
Здравствуйте уважаемые гуру синтеза.
Меня недавно заинтересовали технологии синтеза речи и я решил тоже сделать синтезатор на микроконтроллере. За основу взял фонемную базу любительской программы Голос. Там около 680 фонем различной длины(столько влезло в 2МБ флешку). Схема уже говорит. Но к сожалению есть проблемы. Фонемы записаны с различной громкостью и как признался автор в разных условиях. Я в редакторе подправляю косяки как могу. Но не все удается исправить. Есть ли более качественные открытые и размеченные базы небольшого размера(5-10 мегабайт)? |
Сообщ.
#269
,
|
|
|
Интересует формат файлов *.LAB, тех что идут вместе с базой.
Гугл толком ничего не сказал. Допустим начало файла ru_0001.lab: 0x23 0x0A "0.342000" - ну это ясно что позиция метки 0x20 "125" - что это? 0x20 "pay" - имя метки 0x0A Если в Wavesurfer вручную размечаю транскрипцию и сохраняю, то сохраняет без "125". В принципе пропарсить и так могу, но хотелось бы разобраться что да как. |
Сообщ.
#270
,
|
|
|
Цитата "125" - что это? Второе поле - тип метки. Есть разные метки - для слов, аллофонов, слогов, интонационных событий, и так далее. В разметке на аллофоны используется 125. Эти соглашения пошли из программы: http://emu.sourceforge.net/ которая часто использовалась ранее для обработки речи. |
Сообщ.
#271
,
|
|
|
Спасибо.
Попробую ковырнуть исходники. |
Сообщ.
#272
,
|
|
|
Здравствуйте.
Попробовал натренировать базу RHVoice Elena для marytts. Пример - во [attach=#0]вложении[/attach]. Тип синтеза - unit selection. Действительно звук получился не такой металлический как в RHVoice, однако присутствуют многочисленные артефакты. Вроде бы, и сами фразы, и количество записей в базе совпадает с моделью Николая, но результат получился заметно хуже. Произношение не такое "гладкое", огрехи синтеза выделяются резче. В связи с этим есть несколько вопросов знающим людям: 1. Иногда при синтезе этим голосом в консоли сервера выводится предупреждение "Warning: signal amplitude out of range: 32957". Стоит убавить громкость исходным файлам? Или проблема решается как-то по-другому? 2. Имеет ли вообще смысл делать какую-либо предобработку исходного аудио? Выравнивание громкости, например? Есть ли какие-нибудь инструкции для подготовки аудио к тренировке? 3. Перед тренировкой я перегнал исходные файлы из 44.1 КГЦ в 16. Имеет ли смысл пробовать перетренировать на 44.1 КГц? Теоретически при перегонке из-за некратных частот могли возникнуть какие-то артефакты в исходный файлах. 4. Есть ли какие-нибудь способы проверить качество разметки (ehmm labeling)? Повысить это качество? |
Сообщ.
#273
,
|
|
|
Цитата Пример - во [attach=#0]вложении[/attach]. Чего-то нет вложения. Цитата 1. Иногда при синтезе этим голосом в консоли сервера выводится предупреждение "Warning: signal amplitude out of range: 32957". Стоит убавить громкость исходным файлам? Или проблема решается как-то по-другому? Да, громкость нужно нормализовать в процессе обработки. По-моему, в openmary такая функция есть, хотя я не помню. Если нет, нужно сделать это отдельно. Цитата 2. Имеет ли вообще смысл делать какую-либо предобработку исходного аудио? Выравнивание громкости, например? Есть ли какие-нибудь инструкции для подготовки аудио к тренировке? Чем меньше обработки, тем лучше. Но громкость надо бы выровнять. Цитата 3. Перед тренировкой я перегнал исходные файлы из 44.1 КГЦ в 16. Имеет ли смысл пробовать перетренировать на 44.1 КГц? Нет. Цитата Теоретически при перегонке из-за некратных частот могли возникнуть какие-то артефакты в исходный файлах. Не могли. Цитата 4. Есть ли какие-нибудь способы проверить качество разметки (ehmm labeling)? Повысить это качество? Открыть файл разметки lab в wavesurfer или praat, посмотреть. Подправить вручную. Автоматически сделать все не получится, для синтеза базы всегда оптимизируются вручную - послушать, найти артефакт, проверить откуда он взялся (проверить место в оригинальной базе), подправить там, если нужно. Подправить транскрипцию, если там есть ошибка. Подправить словарь, если он не соответствует произношению диктора. Этот процесс уже описывался в данной теме ранее. Автоматическую разметку лучше делать с помощью sphinx или kaldi, ehmm на самом деле очень мутная штука. В фестивале последнем есть хороший метод оптимизации разметки - move_label, по идее он должен существенно улучшить качество сегментации. В этой теме он уже обсуждался ранее. По современным меркам база Elenа очень маленькая, я бы лучше занялся аудиокнигой, часов на 20-30 речи. С ней качество сегментации гораздо лучше. |
Сообщ.
#274
,
|
|
|
Спасибо за такой подробный ответ!
Убавил громкость исходный файлов. Еще обнаружил, что в фонетическом словаре marytts, который используется по умолчанию, отсутствует приблизительно 10% слов из обучающего множества. После их добавления стало немного получше. Обнаружил в фестивалевском словаре и обучающих фразах несколько косяков с "ё" ("ребенок", "летчик"). В целом разметка, как я понял (по практически идеальному синтезу фраз, на которых происходило обучение), делается сносно. Основная проблема, действительно, в небольшом размере самой базы. В открытом доступе есть еще Irina, размер которой в 3 раза больше. С аудиокнигой на первых порах, я думаю, не справлюсь, т.к. усилий на подготовку материала потребуется гораздо больше. Пишут, что HMM-синтез лишен некоторых недостатков, присущих unit selection. Попробовал натренировать HMM все на той же Елене. Получилось вроде бы неплохо, в плане "гладкости" похоже на RHVoice. Но откуда-то вылезла проблема с затуханием звука, пробую сейчас разобраться. Пробую еще раз приложить аудио файлы (формат - ogg). Прикреплённый файлelena_unitsel3.txt (56,67 Кбайт, скачиваний: 758) Прикреплённый файлelena_hmm1.txt (46,28 Кбайт, скачиваний: 729) |
Сообщ.
#275
,
|
|
|
Цитата В целом разметка, как я понял (по практически идеальному синтезу фраз, на которых происходило обучение), делается сносно. Судя по примерам выложенным, разметка ужасная, очень много дефектов при склейке. Синтез фраз из базы как раз ни о чём не говорит, потому что проблемы возникают при склейке из разных частей базы. С ударениями тоже очень большие проблемы, Mary их просто не умеет предсказывать: переходил, замаранные, покину. Только если ударения исправить, будет значительно лучше. Ударения нужно брать из словаря. |
Сообщ.
#276
,
|
|
|
Удалось решить проблему с затуханием звука в HMM-голосе. Дело было в алгоритме Global Variance, который на дефолтовых настройках приводил к клиппингу на ударных гласных. Теперь на коротких фразах звучит неплохо. Однако на длинных фразах хорошо заметны недостатки по сравнению с RHVoice:
1. Некоторые звуки все равно синтезируются с дефектами. Хотя в RHVoice (судя по скриптам) используется тот же ehmm labeling. Возможно, стоит поэкспериментировать с фичами? Нет ли каких-нибудь рекомендаций? 2. Голос несколько зашумлен. В RHVoice голос более чистый, хотя и проскакивает металлический призвук иногда. Пробовал менять FREQWARPв настройках hts, но желаемого эффекта пока не добился. 3. Интонация и паузы. RHVoice чуть медленнее (rate=0.7) и субъективно более выразительный, с расстановкой. Можно сравнить по прикрепленным файлам. Это какие-то упущения тренировки или особенности реализации синтеза marytts и flite? 4. Обнаружилось, что pitch выглядит более дискретным по сравнению с RHVoice. Не знаю, стоит ли беспокоиться по этому поводу. Цитата Судя по примерам выложенным, разметка ужасная, очень много дефектов при склейке. Синтез фраз из базы как раз ни о чём не говорит, потому что проблемы возникают при склейке из разных частей базы. Правильно ли я понял ваш предыдущий пост, что добиться качественной разметки на таком объеме базы проблематично? На большем объеме hmm будут лучше натренированы - качество разметки возрастет. Кроме того, отдельные ошибки в базе, транскрипциях и словарях также будут нивелироваться за счет объема. Выглядящее наиболее перспективным техническое средство - move_label - работает только с фестивалевскими голосами, как я понял. Стоит ли специально для этого делать фестивалевский голос - непонятно. Цитата С ударениями тоже очень большие проблемы, Mary их просто не умеет предсказывать: переходил, замаранные, покину. Только если ударения исправить, будет значительно лучше. Да, с ударениями надо что-то делать. Есть ли какие-нибудь эффективные алгоритмы их предсказания? Цитата Ударения нужно брать из словаря. Из словаря фестиваля? Прикреплённый файлelena_hmm7_short.ogg.txt (12,56 Кбайт, скачиваний: 802) Прикреплённый файлelena_hmm7_long.ogg.txt (51,69 Кбайт, скачиваний: 738) Прикреплённый файлelena_rhvoice_long.ogg.txt (54,05 Кбайт, скачиваний: 720) Прикреплённый файлelena_mary_rhvoice.png (80,88 Кбайт, скачиваний: 1046) |
Сообщ.
#277
,
|
|
|
Цитата хорошо заметны недостатки по сравнению с RHVoice RHVoice наверное более новый HTS использует вроде 2.1. С версии 1.1 много воды утекло Цитата Стоит ли специально для этого делать фестивалевский голос - непонятно. До HTS голоса надо обязательно делать и тестировать unit-selection, это позволяет значительно улучшить качесто HTS голоса. Цитата Кроме того, отдельные ошибки в базе, транскрипциях и словарях также будут нивелироваться за счет объема. Не будут. Дело в том, что HTS делает на одном из этапов кластеризацию аллофонов, и ошибки только усиливаются, кроме того, их становится тяжелее ловить. Цитата Есть ли какие-нибудь эффективные алгоритмы их предсказания? Нет. Цитата Из словаря фестиваля? Из любого словаря. |