Синтез речи

Сказ о том как

Заставить компьютер заговорить

В данной статье пойдет речь о синтезе речи и программах способных это сделать, на самом деле таких программ довольно много, как платных, так и бесплатных. Мы естественно будем применять бесплатные способы синтеза речи.

Существует несколько бесплатных программ - среди которых я могу выделить две наиболее часто упоминающиеся в интернете:

1.Festival

2.RHVoice

Festival - довольно старенький проект, синтез речи в нем немного хромает - отдает железным оттенком и голос всего один - мужской, скачать полную версию для Windows можно здесь, архив довольно большой, так как содержит исходники программы, в Debian пакет можно поставить из Synaptic или apt-get install festival festvox-ru , от себя могу добавить, что в Windows запустить программу в режиме "СЕРВЕР", мне не удалось, из-за постоянно выскакивающей ошибки.

Запуск Festival в режиме сервера в Linux Debian производится так:

  • festival --server
  • или так
  • festival --server@ (без окна терминала)
  • далее открываем новый терминал и пишем
  • telnet localhost 1314
  • (voice_msu_ru_nsh_clunits) - переключение на русский язык
  • и воспроизводим любую фразу командой
  • (SayText "проба")-в кавычках вводим свой текст.
  • RHVoice - понравился мне больше чем Festival тем, что есть возможность выбора как мужского, так и женского голоса. На слух женский голос приятней, чем мужской. Есть версия под Windows и Linux, но как использовать программу в Windows, я так и не понял, ну да и фиг с ним, в Linux все просто echo "текст" | RHVoice -W Elena > voice.mp3 . В общем пока использую эту программу в своей системе, для озвучивания. Процесс установки в Debian довольно прост - в соответствии с инструкцией находящейся в файле INSTALL программы RHVoice 0.3, последнюю версию запустить не удалось - не создается файл RHVoice-client.

    Building

    Requirements:

    * A C/C++ compiler

    * SCons build system (http://www.scons.org/)

    * Python (http://www.python.org/)

    * Flite 1.4 or later

    * GNU libunistring 0.9.3 or later

    * expat

    * pcre

    * libsox 14.3.2

    Я доставил A C/C++ compiler (gcc) и SCons build system (scons), остальные пакеты у меня в Debian 8 были установленны из кообки при установке системы. Все пакеты есть в Synaptic.

    Архив нужно распаковать и в терменале перейти в папку с исходниками (которая создается при распаковке). Открываем терминал от пользователя и переходим в папку с исходниками командой "cd Загрузки/RHVoice-0.3"

    Пишем scons и нажимаем Enter вывод будет примерно такой:

  • scons: Reading SConscript files ...
  • Mkdir("build/linux2")
  • Checking whether the C compiler works... (cached) yes
  • Checking for C library m... (cached) yes
  • Checking for C header file flite.h... (cached) no
  • trying to search in /usr/include/flite
  • Checking for C header file flite.h... (cached) yes
  • Checking for flite_init() in C library flite... (cached) yes
  • Checking for cst_utf8_explode() in C library flite... (cached) yes
  • Checking for C library flite_cmulex... (cached) yes
  • Checking for u8_strconv_to_locale((const uint8_t*)"a") in C library unistring... (cached) yes
  • Checking for XML_ParserCreate("UTF-8") in C library expat... (cached) yes
  • Checking for pcre_compile("^$",0,NULL,NULL,NULL) in C library pcre... (cached) yes
  • Checking for sox_init() in C library sox... (cached) yes
  • Checking whether SOX_OPTION_DEFAULT is declared... (cached) no
  • Внимание - если не будет хватать какого - либо пакета нужно будет удалить папку build и запустить scons повторно после установки пакета.

  • Здесь побегут строчки сборки файлов .....................
  • scons: done building targets.
  • Затем переходим в режим пользователя ROOT командой "su" и вводим его пароль.

    Пишем scons install жмем Enter и пишем ldconfig.

    Все программа установлена, проверяем так echo test|RHVoice-test, а лучше так echo "собака баскервилей" | RHVoice -W Elena | aplay

    Самое интересное - то, что синтезировать речь можно прямо из интернет браузера, и в этом нам поможет - Yandex и PHP. Получаем ключик Yandex SpeechKit и пишем небольшой скрипт на PHP следующего содержания:

    $qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => "omazh","key" =>

    "ВАШ_КЛЮЧ","emotion" => "good", "text" => "проверка%20связи"));

    $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n")));

    $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx);

    header("Content-type: audio/mpeg");

    header("Content-Transfer-Encoding: binary");

    header('Pragma: no-cache');

    header('Expires: 0');

    echo($soundfile);

    Копируем код в файл PHP и запускаем, мы услышим приятный женский голос. Путём изменения текста в параметре "text" => можно синтезировать различные слова и фразы. Принцип работы очень простой - текст отправляется на сервер, там обрабатывается программой по синтезу речи, на выходе которой получается аудио файл, который затем воспроизводится в нашем браузере с помощью проигрывателя.

    Здесь можно посмотреть как это работает.

    В сети интернет можно найти много online синтезаторов речи, один из них например - Ivona. Так же я нашёл ещё одну интересную flash программку, с помощью которой можно создавать голосовые сообщения с анимированными 3D моделями и отправлять их на e-mail. В ней так же можно создать 3D модель из своей фотографии. А при большом желании можно выковыривать код flash объекта из странички с сообщением и вставлять к себе на сайт, получиться прикольный персонаж - помощник, по типу как раньше в Microsoft Word были котейка с волшебником. Срок действия сообщения 15 Days Trial.

    Пример использования программы RHVoice в системе Умный Дом

    Программы и технологии используемые в моей системе - Умный Дом

    Комментарии Все комментарии

    Написать комментарий