Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
Новости
Последние поступления
Книжный магазин
  Hardware:
Видеоустройства
Системные платы
Процессоры
Мобильные устройства
Аудиосистема
Охлаждение системы
Накопители информации
КПК и ноутбуки
Телефоны и связь
Периферия
Система
Сети
Разные устройства
 
  Programming:
Web-разработка
Языки программирования
Технологии и теория
Разработка игр
Программная инженерия
 
  Software:
Операционные системы
Windows 7
Базы данных
Обзоры программ
Графика и дизайн
   
  Life:
Компьютерная жизнь
Разные материалы
   
Партнеры
Публикация
Правовая информация
Реклама на сайте
Обратная связь
Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Синтез русской речи в Linux

Раздел: Software / Linux @ 31.05.2009 | Ключевые слова: синтез речь linux festival версия для печати

Автор: tkf
Источник: habrahabr

Linux для всехСинтез русской речи в Linux

Прочитал статью про SAPI и Powershell (Учим PowerShell разговаривать), и мне стало интересно как же с синтезом русскоязычной речи в родной для меня операционке, Linux`e. Как выяснилось все далеко не так радужно, да и качество синтеза далеко до голоса Алены, но все же.

Для синтеза речи в linux`e по традиции используется Festival последняя стабильная версия 1.95, но в поставке нет русского голоса, немного порыскав я набрел на проект по синтезу русской речи посредством Festival, где написано что для работы с русским языком понадобится как минимум версия 1.96 бета. Ну ничего в Ubuntu 9.04 как раз такая и стоит. Дальше есть два варианта, либо собрать пакет самостоятельно, либо для пользователей Debian`a или Ubuntu поставить отдельный пакет, весит данное чудо ~190 метров, не хило так я бы сказал. Так как у меня Ubuntu решил поставить пакет.
Пакет называется Festvox-ru, и будет доступен в ubuntu начиная с версии 9.10, так как на руках 9.04, то скачиваем пакет и устанавливаем его в ручную. И тут вскрылась маленькая проблема.
При попытке попросить festival произнести что то по русски он просто молчал, если же указывался язык
echo "Проверка" | festival --tts --language russian, то вываливался c ошибкой:
«Unsupported language, using English»
SIOD ERROR: unbound variable: voice_rab_diphone
festival: fatal error exiting.

Дамс, попробуем сделать так как в мануале, запускаем festival в интерактивном режиме, указываем голос принудительно (voice_msu_ru_nsh_clunits) и просим сказать что нибудь (SayText “Проверка”), вуаля все нормально работает, оформляем это в виде bash script`a и получаем

#!/bin/sh
festival -b "(begin (voice_msu_ru_nsh_clunits) (SayText \"$1\" nil))"


Теперь сохраняем это в файл sayit.sh, назначаем права на запуск chmod a+x sayit.sh и проверяем
./sayit.sh «Проверка»
Ура! все работает.
Если хотим прочить файл используем:

#!/bin/sh
festival -b "(begin (voice_msu_ru_nsh_clunits) (tts_file \"$1\" nil))"


Но все же почему же у нас не заработал русский язык по умолчанию, копаем дальше.
Немного гугления и мы находим багрепорт к debian`овцам от Сергея Кирпичева, вот этот багрепорт. Похоже нам нужно подправить файл languages.scm/
Так что идем в каталог /usr/share/festival где находим этот файл и вносим изменения.
Дописываем вначале:

(define (language_russian)
"(language_russian)
Set up language parameters for Russian."
(set! male1 voice_msu_ru_nsh_clunits)
(male1)
(Parameter.set `Language `russian)
)

и в define(select_language language). добавляем пару строчек

((equal? language `russian)
(language_russian))

Все теперь русский язык поддерживается.
Пробуем прочитать файл.
festival --language russian -tts festival.txt
Ну что же все даже не так уж и плохо, единтвенное «но» это то что Festival достаточно заметно думает перед тем как начать произносить, и иногда ему не нравиться текст, например вместо того чтобы пропускать то что он не может произнести он вываливается с сообщением о
LTS_Ruleset russian_downcase: no rule matches:
LTS_Ruleset: # *here* Ну что же значит надо поубивать из текст ссылки.
Пока что результат меня не особо радует, в принципе синтез русской речи под Linux с одной стороны возможен, с другой качество этого синтеза оставляет желать лучшего. А у меня появилось два новых шелл скрипта. sayit.sh и readit.sh ^_^
Примеры озвучивания можно посмотреть в статье
Учим iPod Shuffle G3 говорить по-русски

Используемые источники:
Искусство программирования на языке сценариев командной оболочки
Русский в Festival
Новая база для синтеза речи, и голос для festival
Debian Bug report logs — #516262 festival: Please add support for --language russian
P.S. по совету rengel_system лучше вместо установки пакета ручками подключить этот репозиторий
P.P.S по совету eugenex15 решил попробовать espeak. устанавливается очень просто, русский язык сразу из коробки, для сохранения образца голоса можно всего лишь добавить один параметр, но вот качество мне показалось просто ужасным. Наверно можно под строить произношение чтобы получить более менее цивильный результат, но у меня не получилось.
_________
Текст подготовлен в ХабраРедакторе

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Software / Linux


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.