AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Русский TTS

Asterisk IP PBX 15 сообщений 11.08.2008 23:48 - 28.10.2010 23:39
#1 11.08.2008 23:48

Русский TTS


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

Использовать, например, так:
Code:
Set(text=Формальный текст на русском языке);
System(/home/braams/katerina ${URIENCODE(${text })} /home/braams/temp.wav);
Playback(/home/braams/temp);

Голос - "Катерина", слегка истерична и с ударениями не всегда хорошо, но имхо лучшее, что есть из русских TTS.
Генерится файл около 3х секунд.

Скрипт написан за на скорую руку, поэтому никаких проверок аргументов и т.д. нет, на выбор curl или wget, кому что больше нравится. У меня все в UTF-8, будет ли работать с другой локалью - не уверен.

В мыслях сделать из этого AGI скрипт, добавить кэширование сгенерированных звуковых файлов (по md5 отпечатку фразы, где-то на voipinfo или еще где подобное видел)

UPD. Что-то форум придирается к расширению моего скрипта, пришлось переименовать в .txt

_________________
Everything over IP & IP over Everything
#2 26.10.2010 08:27

а неплохо, кстати
#3 27.10.2010 04:49

Зачёт!! Good
_________________
Успехов!
#4 27.10.2010 08:48

спасибо
#5 27.10.2010 09:28

есть какие-то ограничения? по кол-ву каналов например?
#6 27.10.2010 10:57

Скачал, но при работе скрипта выдается ошибка HTTP/1.1 400 Bad Request. Что не так?
#7 27.10.2010 11:36

уже забанили наверное (за флуд) Wink
_________________
Успехов!
#8 27.10.2010 12:11

да вроде работает
#9 27.10.2010 12:29

у меня тоже. в целом неплохо. было бы неплохо полностью набор "записать". или сделать сайтик для генерации и скачивания заданных фраз + автоматом их ложить в общий архив. интересно как к такой инициативе владельцы отнесутся?
_________________
Успехов!
#10 27.10.2010 13:17

А скрипт надо править? Или у всех работатет с исходными данными Braamsа
#11 27.10.2010 13:28

ну я вырезал ^M символы, иначе не запускался Cool
к слову сказать его необязательно в астериск сувать - прямо в консоли и запускайте, только два параметра указывайте как в примере. русскую фразу в кавычки.
./katerina.sh "мама мыла раму, маша ела кашу" /tmp/temp.wav
play /tmp/temp.wav

Added after 7 minutes:

Braams, а где бы еще правила составления слогов нарыть? может у них сайт есть какой?
заметил прикол:
фраза "Спасибо. Дождитесь ответа секретаря..." читает нормально, но делает длинную паузу после слова Спасибо. можно было бы ее сократить вдвое. если же поставить запятую вместо точки то читает уже как "СпасЕбо". если же совсем знак препинания не ставить то читает слитно без паузы, что тоже не приемлимо.
есть гдето правила создания этих звуков?

_________________
Успехов!
#12 27.10.2010 13:47

На сайте у них еще озвучка Милена есть, она вроде даже почетче выговаривает.

По поводу скрипта - я и пытаюсь из консоли запустить вот может кто подскажет

/bin/bash /home/siper/katerina.sh привет /home/siper/temp.wav
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 419 0 2787 --:--:-- --:--:-- --:--:-- 0

ngrep выдает такое
filter: (ip or ip6) and ( host 212.8.184.250 )
####
T 2010/10/27 16:39:40.680961 X.X.X.X:56716 -> 212.8.184.250:80 [AP]
POST /tts/go. HTTP/1.1.
User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15.
Host: 212.8.184.250.
Accept: */*.
Content-Length: 419.
Content-Type: application/x-www-form-urlencoded.
.
_engine=1&_language=6&_voice=7&_frequency=1&text=.............&remLen=5&File=&engine=RS+Host&_text=null&engine_type=HOST+API&library=%25SSFTTTSSDK%25%5Cspeech%5Ccomponents%5Ccommon%5Clhstts.dll&language=Russian&voice=Katerina&frequency=8+kHz&reduction=5&flag=true&user_name=braams%40yandex.ru&user_ip=79.171.9.37&user_id=&dict_name=&rules_name=&engine_id=1&language_id=6&voice_id=7&frequency_id=1&reduction_id=5&elv_id=
#
T 2010/10/27 16:39:40.749274 212.8.184.250:80 -> X.X.X.X:56716 [AP]
HTTP/1.1 400 Bad Request.
Server: Apache-Coyote/1.1.
Date: Wed, 27 Oct 2010 12:32:13 GMT.
Connection: close.
#13 28.10.2010 02:57

ну чето у тя с курлом значит. закоментируй его в скрипте и раскоментируй wget

Added after 1 minutes:

siper wrote:
На сайте у них

а что за сайт то?

_________________
Успехов!
#15 28.10.2010 23:39

Тоже решение, но не надежное какое-то...
1. Зависимость от внешнего сервиса - вдруг что-то у них или по дороге падает, и мы приплыли.
2. 3 сек - долговато будет. Ох долговато. У меня абоненты звонящие за долгом уже положить успевают за такое время, заказчики рвут и мечут.

Если сильны в C то советую написать TTS-демон , к которому через AGI отправлять запросы на озвучку(шаблоны текста ложить в файл, через запрос предавать только подстановки, настройки голоса и место куда ложить аудио). Сам TTS построить по словарному принципу: слово - аудиофайл(надеюсь "Войну и Мир" или "Большую Советскую Энциклопедию" читать не придется?)

_________________
Slackware 13.1 - Asterisk 1.8