Ru: Archive: QtSpeech, доступ к text-to-speech

Хочу представить небольшой но удобный модуль для кросс-платформенного использования TTS(text-to-speech). На данный момент поддерживаются основные платформы:
* Windows, используя SAPI,
* Unixes, используя Festival проект,
* MacOSX, используя SpeechSynthesis

Так как для Windows и Mac используются родныe API то все голосовые движки установленные в систему будут автоматически вам доступны. Для Unix всё не так радужно, нет какой-то общей системы, апи, поэтому был просто выбран проект Festival который даёт неплохое качество для английского языка и лицензию LGPL. На Mac вы всегда можете расчитывать на отличный голос Alex.

Использование библиотеки очень простое – итак ваше приложение наконец скажет “Hello World!”.

Нужно подключить <QtSpeech>. Теперь когда вашему приложению нужно сказать что-ли синхронно (исполнение будет ждать в этой точке пока голос не отработает) достаточно следующего кода:

#include <QtSpeech>
...
QtSpeech voice;
voice.say("Hello World!");

Если нужна асинхроность (приложение не заблокированно) просто используйте tell():

QtSpeech * voice = new QtSpeech(this);
voice->tell("Hello asynchronous world!");

Если нужно по окончанию отработать определённую логику:

voice->tell("Hello!", this, SLOT(onSpeechFinished()));

Также можем получить список голосов в системе:

QtSpeech::VoiceNames vs = QtSpeech::names()

Теперь о голосах. Самый большой набор различных голосов и языков продаёт Acapela для Windows и Mac, под Mac распространяют под другим именем Infovox iVox. Также есть голоса от IBM и еще пару компаний. Что плохо – эти голоса вы не сможете включить в вашу программу и распространять вместе с ней, надо договаривать с компанией или покупать их SDK если он есть. Но для английского вы всегда можете расчитывать на голос по умолчанию (или завязаться на Festival).

Применения самое самое различное. Нужно озвучить что-либо по быстрому? Механический голос в простенькой игрушке? Теперь кросс-платформенно с Qt.

Планы: Сделать версию без привязки к Qt (скорее всего пользовать boost:threads). Больше функционала – сделать паузу, итд. Но будет скорее только тот функционал кототорый будет доступен сразу на всех трёх платформах.

Ссылки:
1 Скачать, репозитарий в Gitorius: http://gitorious.org/qt-speech
2 Сайт проекта: http://lynxline.com/projects/qtspeech/

This entry was posted in Blog, C++, Projects, Qt, QtSpeech, Research, Ru, TTS. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>