ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СИНТЕЗА РЕЧИ

 

 

Синтез речи по тексту

Синтез речи по тексту — преобразование текста в произносимые слова.

Структура синтеза речи:

  • разделение слов на фонемы;

  • нахождение текста, требующего преобразования в речь

  • анализ текста (синтаксический, морфологический, семантический...)

  • выделение в тексте фонем.

  • генерация цифрового звукового сигнала

  • воспроизведение звукового сигнала (преобразование его в звук).

Способы синтеза речи:

  • параметрический  - применяется на заданном ограниченном лексиконе, позволяет достичь высокого качества.

  • компилятивный (компиляционный, конкатенативный) - на основе готового звукового словаря

  • предметно-ориентированный - компилирует записанные заранее слова и фразы для создания полных речевых сообщений.

  • по правилам - работает с произвольными текстами на основе их лингвистического анализа, обеспечивает управление всеми параметрами речевого сигнала

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

Формантный синтез по правилам - моделирует звуковой строй языка (фонемный) и речи (формантный).

Форманта - акустическая (спектральная) характеристика звуков речи

Синтез речи по правилам с использованием предварительно запомненных отрезков естественного языка:

  • аллофонов (реальных звуков, реализации фонем в конкретном фонетическим окружением)

  • дифонов (участков речевого сигнала, включающих переходы между звуками)

  • полуслогов (сегментов, содержащих половину согласного и половину примыкающего к нему гласного)

  • коллокаций (синтаксически и семантически целостных (устойчивых) единиц речи).

  • др....

 

 

Программное обеспечение синтеза речи

Для пользовательского синтеза и распознавания речи на компьютере с Microsoft Windows  необходимо наличие специального программного обеспечения, включающего:

 

 

Application Programming Interface

 

Интерфейс программирования приложений  (англ. application programming interface, API ) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (модулем, библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

API определяет функциональность, которую предоставляет программа (модуль, библиотека, сервис), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.

Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика, которые он может вертеть и дёргать.

Программные компоненты взаимодействуют друг с другом посредством API.

Обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов (как и протоколы передачи данных по Интернет, где каждый из 7 уровней пользуется функциональностью предыдущего уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему уровню).

 

В контексте программирвоания понятие протокола логически тождественно понятию API.

И то и другое является абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о взаимодействии приложений.

 

COM (англ. Component Object Model — объектная модель компонентов) — технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих компонентов, каждый из которых может использоваться во многих программах одновременно.

COM воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования.

COM закрепился в основном на операционных системах семейства Microsoft Windows. На основе COM были реализованы технологии: Microsoft OLE Automation, ActiveX, DCOM, COM+, DirectX, а также XPCOM.

 

 

 

 

Speech Application Programming Interface

 

Speech Application Programming Interface (Speech API, SAPI) — интерфейс программирования приложений для распознавания и синтеза речи, основанный на технологии COM.

SAPI используется в программах по преобразованию текста в голос (читалках), а также для голосового управления операционной системой и отдельными программами.

Microsoft Speech API 4.0 вышел в 1998 году. Он вошел в операционную систему Microsoft Windows 2000 (только с возможностью синтеза речи).

Microsoft Speech API 5.1 вышел в 2001 году как составная часть Speech SDK 5.1.

Microsoft Speech API 5.1 вошел в состав Microsoft Windows XP.

В Microsoft Windows 7 установлен  Microsoft Speech API 5.4

SAPI4 и SAPI5 несовместимы между собой, но при этом не мешают друг другу и могут работать на одном компьютере.

Для программ поддерживающих обе библиотеки рекомендуется их обе и установить (это позволит иметь большее количество голосовых движков). Каждый из голосовых движков будет работать только с одной из этих библиотек.

SAPI 5 позволяет добиться более качественного произношения, однако для нее:

  • встроена поддержка только английского языка

  • всего 3 голоса в комплекте — Mary, Mike и Sam

  • меньше бесплатных голосовых модулей

SAPI 5.4 поддерживает:

  • SSML (), который  предоставляет возможность разметки голосовых характеристик (скорость, громкость, высота, акцент, произношение).

  • собственный язык разметки SAPITTS для аннотирования текста (в дополнение к SSML) . SSML и SAPITTS имеют похожий синтаксис и SSML-тексты могут быть конвертированы в SAPITTS. 

  • ограниченные определения контекстно-свободных грамматик SRGS (только как XML-реализацию без BNF-расширений  (ABNF)  и без использования SRGS для тонового управления DTMF (touch-tone)

  • SAPI CFG - собственную XML-грамматику  (в дополнение к SRGS) .

SAPI 5.4 позволяет пополнять SRGS-грамматику аннотированием семантической информации, так что результат распознавания может содержать не только распознанный текст, но и семантическую интерпретацию этого текста.

For example, the recognized text of a yes/no grammar might be "yes", "yeah" or "yep", but the semantic meaning of all of these is "yes". This makes it easier for applications to consume recognition results, as well as empowering grammar authors to provide a full spectrum of possible utterances without burdening the developer with the interpretation task.

В аннотации семантической информации в SRGS может быть реализовано одно из следующих действий:

  • Строковый литерал, содержащий семантическое значение.

  • JScript-утверждение, возвращающее строку, содержащую некоторое семантическое значение.

 

 

Microsoft Speech Platform и Елена

12.10.2012

Microsoft Speech Platform - набор инструментов для построения решений с речевым интерфейсом (распознаванием и синтезом речи).

Microsoft Speech Platform является альтернативой Microsoft Speech API.

Текущая версия 11.0 платформы предлагает голоса для 26 языков

Русский голос Elena для Microsoft Speech API (файлы SpeechPlatformRuntime.msi для х64 и х86, размеры 2,6МБ и 2,2МБ соответственно) не поддерживают ни SAPI4, ни SAPI5.

Файл установки TTS (речевого движка) входит в состав Microsoft Speech Platform - Runtime Languages – набора языков для серверной части Microsoft Speech Platform.

Для каждого языка доступны для скачивания:

  • модули для распознавания речи (файлы, чьи имена начинаются с "MSSpeech_SR_")

  • голсовые модули (файлы, чьи имена начинаются с "MSSpeech_TTS_"). 

Русский голос Elena (не путать с Алёной от Nuance) - файл   MSSpeech_TTS_ru-RU_Elena.msi, размер 6 МБ).

Качество речи - посредственное; много ошибок в ударениях. Такая же ситуация и с немецким голосом - большое количестве ошибок в произношении немецких слов.

Для голосовых модулей Microsoft Speech Platform можно использовать те же теги, что и для голосов SAPI 5.

Теги смены голоса ("Voice" и "Lang") позволяют переключаться лишь между голосами платформы (нельзя при чтении одного текста задействовать голоса SAPI 5 и голоса Microsoft Speech Platform одновременно). 

 

Среди популярных программ синтеза речи корректно работает с Microsoft Speech Platform "Балаболка" (http://www.cross-plus-a.com/balabolka.zip).

Cool Reader 2.0.66, ICE Book Reader Professional Russian 9, "Демагог" Microsoft Speech Platform и Елену не находят.

 

 

Интерфейсы SAPI 5.4

Interfaces in SAPI 5.3 are:

Interface Name

Description

ISpEnginePronunciation

Provides methods that retrieve lists of information about a given word in a dictionary.

ISpEventSource2

Extends the ISpEventSource interface by providing a function that retrieves extended event information.

ISpGrammarBuilder2

Extends the ISpGrammarBuilder interface.

ISpPhoneticAlphabetConverter

Enables applications to convert phonemes from SAPI to the Universal Phone Set (UPS) and from UPS to SAPI.

ISpPhoneticAlphabetSelection

Enables the client to control the character phoneset in which pronunciations are encoded by the GetPronunciations method.

ISpPhrase2

Extends the ISpPhrase interface to provide SML result information and the audio stream containing the utterance corresponding to the result.

ISpPrivateEngineCallEx

Extends the ISpPrivateEngineCall interface.

ISpRecoContext2

Extends the ISpRecoContext interface.

ISpRecognizer2

Extends the ISpRecognizer interface.

ISpRecoGrammar2

Extends the ISpRecoGrammar interface.

ISpRecoResult2

Extends the ISpRecoResult interface.

ISpSerializeState

Enables applications to to save and restore the recognizer's internal state.

ISpShortcut

Provides methods that implement user shortcuts.

ISpSRAlternates2

Extends the ISpSRAlternates interface to enable an application to commit a particular text.

ISpSREngine2

Extends the ISpSREngine interface.

ISpSREngineSite2

Extends the ISpSREngineSite interface.

ISpXMLRecoResult

Defines the semantic results of speech recognition.

ISpeechResourceLoader

Gives applications control over loading resources.

ISpeechRecoResultDispatch

Supports IDispatch access to the ISpeechRecoResult and ISpeechXMLRecoResult interfaces.

ISpeechXMLRecoResult

Gets recognition results from the ISpXMLRecoResult as an SML document.

 

 

 

Структуры SAPI 5.4

Structures in SAPI 5.4 are:

Structure Name

Description

SPEVENTEX

Contains information about an event and extends the SPEVENT structure.

SPNORMALIZATIONLIST

Contains a list of alternative form normalizations for a word.

SPRULE

Represents a rule in a collection of run-time grammar rules.

SPSEMANTICERRORINFO

Represents information about a recognition error.

SPSHORTCUTPAIR

Describes a pairing of a spoken shortcut phrase with the corresponding text or a node in a linked list of shortcut pairs.

SPSHORTCUTPAIRLIST

Contains the shortcut pair linked list.

 

 

 

 

Text-to-speech engine

Text-to-speech engine (ТТS, движок синтеза речи, речевой движок) - программа преобразования текста в речь.

TТS  преобразуют текст в речь и голос, отвечают за тембр речи, скорость воспроизведения, интонацию, и другие особенности.

Движки синтеза речи выполнены в виде системного драйвера и не имеют внешнего интерфейса.

Для использования движка необходимы:

  • голосовой модуль (часто включается в состав движка)

  • программа синтеза речи, которая выполняет роль интерфейса, позволяет работать с движком, изменять его настройки, звучание речи, использует дополнительные возможности.

Движки преобразования текста в речь могут использовать один из двух способов синтеза голоса:

  • генерировать звуки, подобные издаваемым голосовыми связками и использовать различные фильтры для моделирования длины горла, форму ротовой полости, расположение губ и языка;

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

Движки синтеза речи характеризуются несколькими параметрами:

  • количество языков синтеза речи (русский, английский, французский...),

  • тип голоса (мужской, женский...),

  • способ синтеза речи,

  • поддерживаемые стандарты (SAPI - speech application programming interface),

  • сфера применения.

Настроки поддерживаемые движками:

  • скорость речи (speed),

  • высота голоса (тембр, pitch),

  • громкость (volume)

  • ускоренный режим записи (т.е. режиме при котором запись идет в несколько раз быстрее, чем проигрывание полученного аудиофайла в реальном времени).

Выпускаются движки синтеза речи различными компаниями.

Microsoft поставляет бесплатный базовый набор речевых движков вместе с операционными системами Windows XP/7/8 в совтаве Speech API (SAPI).

 

Для установки TТS нужно скачать дистрибутив, и запустить процесс установки.

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

 

 

 

 

TTS Engine для Windows

Один речевой движок может поддерживать различные голосовые модули.

Примеры:

  • Lernout & Hauspie TruVoice TTS engine (бесплатные голоса):
    Американский английский (1 МБ)
    Британский английский (2,5 МБ)
    Голландский (2,6 МБ)
    Испанский (2,4 МБ)
    Итальянский (2 МБ)
    Немецкий (2,2 МБ)
    Португальский (2,4 МБ)
    Русский (2,9 МБ)
    Французский (2,2 МБ)

  • IVONA Voices TTS engine (коммерческие голоса, 60 - 420 Mb для каждого голоса):
    Danish
    Mads - male - Q3 2012
    Naja - female - Q3 2012
    Dutch
    Ruben - male - Q3 2012
    Lotte - female - Q3 2012
    English
    1. American English
    Salli - female - Q3 2011
    Ivy - child - Q3 2011
    Chipmunk - male - Q1 2011
    Kimberly - female - Q4 2010
    Kendra - female - Q2 2010
    Joey - male - Q2 2010
    Eric - male - Q4 2008
    Jennifer - female - 2007
    2. Australian English
    Russell - male - Q3 2012
    Nicole - female - Q4 2011
    3. British English
    Emma - female - Q4 2010
    Amy - female - Q4 2009
    Brian - male - Q4 2009
    4. Welsh English
    Gwyneth - female - Q3 2011
    Geraint - male - Q3 2011
    French
    1. French
    Céline - female - Q2 2011
    Mathieu - male - Q2 2011
    2. Canadian French
    Chantal - female - Q1 2012
    German
    Marlene - female - Q2 2011
    Hans - male - Q2 2011
    Icelandic
    Dóra - female - Q3 2012
    Karl - male - Q3 2012
    Italian
    Carla - female - Q3 2012
    Giorgio - male - Q1 2012
    Polish
    Agnieszka - female - Q1 2012
    Maja - female - Q4 2009
    Jan - male - Q2 2009
    Ewa - female - Q4 2006
    Jacek - male - Q3 2004
    Portuguese (Brazilian)
    Vitória - female - Q1 2012
    Ricardo - male - Q1 2012
    Romanian
    Carmen - female - Q2 2008
    Russian
    Tatyana - female - Q2 2013
    Spanish
    1. Castilian Spanish
    Penélope - female - Q2 2011
    Miguel - male - Q2 2011
    2. American Spanish
    Conchita - female - Q2 2011
    Enrique - male - Q2 2011
    Welsh
    Gwyneth - female - Q3 2011
    Geraint - male - Q3 2011

 

Примеры TTS Engine и русскоязычных голосовых модулей для Windows:

  • Движок Sakrament TTS Engine
    Разработчик: Sakramanet Дата 2006
    Сайт www.sakrament.com
    Поддержка SAPI 5
    Русскоговорящий движок от белорусской фирмы Sakrament с программой для чтения текстов Рассказчiк. 

  • Движок Acapela Elan Speech Cube Telecom RUS (Nicolai).
    Разработчик: Acapela Дата 2005
    Сайт http://www.elantts.com
    Поддержка 4 и SAPI 5

  • Движок Acapela Infovox Desktop 2.220 Engine (Alyona)
    Разработчик: Acapela Дата 2008
    Сайт http://www.elantts.com
    Поддержка SAPI 4 и SAPI 5

  • Движок ScanSoft RealSpeak Russian Voice (Katerina)
    Разработчик: ScanSoft (сейчас Nuance Communications) Дата 2005
    Сайт http://www.nuance.com/realspeak/
    Поддержка SAPI 5 Голос «Катерины» напоминает истерическую алкоголичку, но при этом более «человеческий», чем у «Николая». Не поддерживает регулировку тембра голоса и подключаемые словари.

  • Движок Loquendo TTS (Olga)
    Разработчик: Loquendo (Италия) Год выпуска: 2008
    Поддержка SAPI 4 и SAPI 5

  • (Tatyana)
    Разработчик: IVONA Software Год выпуска: 2013
    Сайт разработчика: www.ivona.com
    Поддержка SAPI 5

 

 

Мобильные TTS Engine

Коммерческие TTS:

  • SVOX Mobile TTS (http://www.svox.com/)
    Цена: договорная для B2B сегмента
    Языки: 26, включая русский
    Субъективная оценка качества звучания: высокое
    Мобильные ОС: Android, Symbian, Windows CE / Windows Mobile, BREW

  • Acapela TTS (http://www.acapela-group.com/)
    Цена: 2800€ плюс так называемая run-time license, за которую в самом лучшем случае придется платить по 49€ за каждое распространенное приложение
    Языки: 23, включая русский
    Субъективная оценка качества звучания: высокое
    Мобильные ОС: Symbian, Windows CE / Windows Mobile, Embedded Linux, iOS
    Для iOS сделан отдельный сайт http://www.acapela-for-iphone.com/.
    Предоставляет «облачный» синтез речи, а также портирование SDK под любую платформу.

  • Loquendo Embedded TTS (http://www.loquendo.com/)
    Цена: 3000€ плюс проценты с каждого проданного Вами мобильного приложения
    Языки: 26, включая русский
    Субъективная оценка качества звучания: высокое
    Мобильные ОС: Android, Symbian, Windows CE / Windows Mobile, Embedded Linux, iOS, Maemo, Moblin, MeeGo, PalmOS
    Движок Loquendo отвечает спецификации SSML 1.0, рекомендованной W3C и обладает специальными тегами, позволяющими делать речь более естественной, подмешивая в нее  кашель, смех и прочее.
    Движок отвечает спецификации SSML 1.0, рекомендованной W3C.

  • Sakrament TTS (http://www.sakrament.com/)
    Цена: 1500€ для одной ОС
    Языки: английский, русский
    Субъективная оценка качества звучания: среднее
    Мобильные ОС: Symbian, Windows Mobile
    Возможность разработки коммерческих продуктов: есть
    Качества синтеза речи Sakrament TTS вполне достаточно, что бы озвучивать короткие фразы типа номеров телефонов или названий приложений.

Свободные TTS:

  • Flite
    Языки: английский плюс возможность компиляции языков FestVox
    Субъективная оценка качества звучания: низкое
    Мобильные ОС: Android, Windows CE / Windows Mobile, iOS, PalmOS

  • eSpeak (http://espeak.sourceforge.net/)
    Языки: 39, включая русский
    Субъективная оценка качества звучания: среднее
    Мобильные ОС: Android, Windows CE / Windows Mobile

 

Встроенные решения:

  • Android (http://www.android.com/)
    Языки: английский, французский, немецкий, итальянский, испанский
    Субъективная оценка качества звучания: среднее
    Встроенная функциональность синтеза речи в Android доступна с версии 1.6.

По неизвестной причине Microsoft лишила свою мобильную ОС соответствующего программного интерфейса (MS SAPI).

 

 

Полезный ресурс

 

TTS, голосовые модули для различных языков, словари, сообщество, редакторы и др. http://mytts.forum2x2.ru

 

 

 

 

Поддержка синтеза речи в .NET Framework

Фреймворк (англ. framework — каркас, структура) — программное обеспечение, облегчающее разработку и объединение разных компонентов программного проекта.

.NET Framework — программная платформа Microsoft для разных языков программирования на основе общеязыковой среды исполнения Common Language Runtime (CLR) для создания приложений под ОС Windows, Windows Phone, Windows Server и Windows Azure. 

.NET Framework предоставляет управляемую среду выполнения, которая упрощает разработку и развертывание приложений, а также возможности интеграции с различными языками программирования.

.NET Framework состоит из

  • среды CLR

  • библиотеки классов .NET Framework, которая содержит классы, интерфейсы и типы значений. 

17.10.2013 Вышла новая версия .NET Framework 4.5.50938.18408

 

System.Speech - пространства имен .NET Framework 4.5 для обеспечения синтеза речи:

 

Пространство имен Описание

System.Speech.AudioFormat

Пространство имен состоит из одного класса, SpeechAudioFormatInfo, который содержит сведения о формате аудио, вводимых для распознавания речи или выполняется выход из синтеза речи.

System.Speech.Recognition

Пространство имен содержит типы технологий речи рабочего стола Windows для реализации программы распознавания речи.

System.Speech.Recognition.SrgsGrammar

Позволяет программно создавать грамматики, совместимые SRGS.

System.Speech.Synthesis

Cодержит классы для инициализации и настройки модуля синтеза речи, для создания запросов для формирования речи для реакции на события и изменения характеристик голоса.

System.Speech.Synthesis.TtsEngine

Поддерживает создание языка разметки синтеза речи (SSML) на основе пользовательских TTS.

 

 

N:System.Speech.Synthesis

 

N:System.Speech.Synthesis - пространство имен .NET Framework 4.5 для инициализации и настройки модуля синтеза речи, создания запросов для формирования речи для реакции на события и изменения характеристик голоса.

 

Классы N:System.Speech.Synthesis

Класс

Описание

BookmarkReachedEventArgs

Возвращает данные из BookmarkReached событий.

FilePrompt

Представляет запрос, созданный из файла.

InstalledVoice

Содержит сведения об установленной в Windows системе синтеза речи.

PhonemeReachedEventArgs

Возвращает данные из события PhonemeReached.

Prompt

Представляет сведения о том, что может быть отображен или текст или аудио, SpeechSynthesizer.

PromptBuilder

Создает пустой объект Prompt и предоставляет методы для добавления содержимого, выбора голоса, управления атрибутами голоса и управления произношением произносимых слов.

PromptEventArgs

Представляет базовый класс для EventArgs в System.Speech.Synthesis пространства имен.

PromptStyle

Определяет стиль для подсказок речи, состоящий из параметров выделения, скорости и громкости.

SpeakCompletedEventArgs

Возвращает уведомление от SpeakCompleted событий.

SpeakProgressEventArgs

Возвращает данные из события SpeakProgress.

SpeakStartedEventArgs

Возвращает уведомление от SpeakStarted событий.

SpeechSynthesizer

Предоставляет доступ к функциональности установленного механизма синтеза речи.

StateChangedEventArgs

Возвращает данные из события StateChanged.

VisemeReachedEventArgs

Возвращает данные из VisemeReached событий.

VoiceChangeEventArgs

Возвращает данные из VoiceChange событий.

 

Перечисления N:System.Speech.Synthesis

 

Перечисление

Описание

PromptBreak

Перечисляет значения интервалов интонационного разделения (перерывов) между границами слова.

PromptEmphasis

Перечисляет значения для уровней выделения в приглашениях.

PromptRate

Перечисляет значения спокойным частота запросов.

PromptVolume

Перечисляет значения уровней громкости (громкость) в запросах.

SayAs

Перечисляет типы содержимого для озвучивания элементов например времени, дат и денежных единиц.

SynthesisMediaType

Перечисляет типы файлов мультимедиа.

SynthesisTextFormat

Перечисляет типы форматов текста, которые могут быть использованы для создания объекта Prompt.

SynthesizerEmphasis

Перечисление уровней выделения синтезатора.

SynthesizerState

Перечисляет значения для состояния SpeechSynthesizer.

VoiceAge

Определяет значения возраста синтезированной речи.

VoiceGender

Определяет значения пола синтезированной речи.

 

 

 28.11.2013

kmp