Tagged: tts

[Linkset] Синтез речи: беглый обзор

Тем кто ищет как автоматически произносить текст несколько ссылок с кратким описанием. Системы прозношения текста называются термином Text-to-speech (TTS) или Diphone Speech Synthesis и по этим терминам проще гуглить.

Матчасть:

Синтез речи на Википедии
Speech Synthesis on Wikipedia

Стандарты

Speech Synthesis Markup Language (SSML) вкратце на Википедии.
VoiceXML
Media Resource Control Protocol (MRCP)
Folstein Mini Mental Status Exam (MMSE) какой-то там тест по которому проверяют качество TTS.
Web Speech API Specification

Java

Есть стандарт Java Speech API (JSAPI) и JSR 113: JavaTM Speech API 2.0 но с его реализацией похоже туго.
No reference implementation exists for JSAPI. Вот мне всегда было непонятно зачем тогда создавать стандарт.
Насколько я понял, синтезатор голоса был изначально во первой версии Java от Sun, но потом его вырезали в FreeTTS, и у IBM тоже была какая-то своя приблуда для этого IBM Speech.
Вот их FAQ можно найти ответы на другие вопросы и посмотреть древний список реализаций этого апи.

jsapi.sourceforge.net

Java Speech API
Wrapper for vendors to simplify usage of the Java Speech API (JSR 113). Note that the spec is an untested early access and that there may be changes in the API. Demo implementations support FreeTTS, Sphinx 4, Microsoft Speech API 5.4 and the Mac OSX speech synthesizer.
Т.е. это просто биндинг к другим сервисам.

FreeTTS

FreeTTS выглядит заброшенным но вполне рабочий. Я его уже использовал для озвучивания логов как Log4J Appender где он справлялся хорошо.
Изначально разрабатывался в лаборатории компании Sun. Поддерживает JSAPI 1.0 (а уже есть 2.0) но только по синтезу (javax.speech.synthesis), не по распознаванию.
Поддерживает три голоса английского, но вроде как можно импортировать MBROLA голоса но русского и украинского там нет.
Вообщем рекомендую для базового синтеза простых текстов.

FreeTTS is a speech synthesis system written entirely in the JavaTM programming language. It is based upon Flite: a small run-time speech synthesis engine developed at Carnegie Mellon University. Flite is derived from the Festival Speech Synthesis System from the University of Edinburgh and the FestVox project from Carnegie Mellon University.
Т.е. корнями FreeTTS уходит в плюсовые программы описанные тут ниже.

Как я уже говорил, проект заброшенный, но есть форк на Гитхабе который делается одним пацаном для софта для больных Афазией.

Вот пример кода с использованием: FreeTTS Hello World Java Maven.

MARY Text-to-Speech System (MaryTTS)

Более серьёзный синтезатор разработанный в немецком университете и имеющий коммерческое применение. Разработка поддерживается, последний комит был пять дней назад.
Поддерживаются американский и британский английский, мужской русский, немецкий, итальянский, шведский, турецкий, французский, телугу (язык юго-восточноо штата в Индии) и была попытка сделать тибетский и арабский (статья). Украинского нету.
Список языков и голосов и если что можно сделать самому поддержку языка.

MARY is an open-source, multilingual Text-to-Speech Synthesis platform written in Java. It was originally developed as a collaborative project of DFKI’s Language Technology lab and the Institute of Phonetics at Saarland University and is now being maintained by DFKI. As of version 4.3, MARY TTS supports German, British and American English, Telugu, Turkish, and Russian; more languages are in preparation. MARY TTS comes with toolkits for quickly adding support for new languages and for building unit selection and HMM-based synthesis voices.

Я не пробовал в работе, но мне кажется что его вполне можно использовать в продакшене.

Облачные сервисы —

Послыешь запрос, получаешь

Yandex.SpeechKit

«распознавание и синтез речи, голосовую активацию и выделение смысловых объектов в произносимом тексте.»
Есть в виде облачного сервиса и HTTP API к нему и в виде Mobile SDK для iOS, Android и WindowsPhone которые шлют поток с микрофона на сервер для распознавания.
Платный для коммерческого использования, до 10000 запросов бесплатен, но нужно запросить API ключ и я его уже четвёртый день жду.
Можно попробовать установив приложение Яндекс.Диктовка и оно распознаёт практически идеально.

Работает на своём движке. Вот тут Яндекс рассказали как Распознавание речи от Яндекса. Под капотом у Yandex.SpeechKit
Поддерживает распознавание и синтез русского языка и только распознавание турецкого, разрабатывается поддержка английского, но есть возможность говорить с разными эмоциями (добрый, злой, нейтральный) что довольно прикольно как по мне. Ещё интересно что может учитывать гео координаты для более точного распознавания названий улиц.

Железки начали понимать. А мы их всё равно считаем глупыми
Почему роботы разговаривают с нами только в кино

Для Cloud API можно сгенерировать звук по GET запросу например так
http://tts.voicetech.yandex.net/generate?text=»Какой%20ровный%20и%20пра%27вильный%20голос»&speaker=zahar

Очень интересная фишка: Выделение смысловых объектов из текста с помощью которого можно распознавать например даты (что самое интересное поддерживается украинский язык), имена и адреса, что очень полезно для голосового управления.

Центр речевых технологий

«Центр речевых технологий» российская компания делающая синтезаторы текста и другой софт например для голосовой аутентификации и распознавалки для спецслужб.
Семь голосов, один женский голос на казахском языке. Украинского нету.
Дают облачный API для синтеза VoiceFabric, вроде не дорого.

VoiceFabric: технология синтеза речи из облака

Ребята очень крутые и даже умудрились сгенерировать голос умершего человека:

Google Speech API

У гугла есть закрытое АПИ для синтеза и распознавания речи, но они могут в любой момент закрыть к нему доступ, так что не стоит его использовать в продакшене.
Для синтеза речи достаточно просто отправить GET запрос на адрес http://translate.google.com/translate_tts, например:

http://translate.google.com/translate_tts?ie=UTF-8&q=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82&tl=ru&prev=input

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

Также есть возможность распозновать текст но там уже нужно иметь апи ключ и лимит на 50 запросов в сутки
https://github.com/gillesdemey/google-speech-v2

J.A.R.V.I.S. — Java биндинг (врапер) к Google Speech API

Microsoft Bing translator (Microsoft Translator API)

У поисковика Бинг тоже есть свой переводчик.
И у него похоже адекватное АПИ с доступом через AJAX, HTTP и SOAP с методом Speak
Который также шлёт GET запрос на адрес
http://api.microsofttranslator.com/V2/Http.svc/Speak

Доступен всем через Azure и до двух миллионов символов в месяц бесплатен, если выше смотрите цены.
Русский и Украинский есть, всего 45 языков.
Выглядит солидно, но не пробовал в деле. Поскольку это Майкрософт то где-то подвох будет точно.

SpokenText

SpokenText lets you easily convert text in to speech. Record (English, French, Spanish or German) PDF, Word, plain text, PowerPoint files, and web pages, and convert them to speech automatically. Create .mp3 or .m4b (Audio Book) recordings (in English, French, Spanish and German) of any text content on your computer or mobile phone.

YAKiToMe!

http://www.yakitome.com/
Free text to speech. Uses the world’s best text to speech (TTS) software. Upload documents, cut and paste text or link to feeds. Text reader converts text to speech automatically. Download audio and podcasts. It’s fast and easy to use. Get started right away! No software to download or install.
Просто дофигища голосов английского, женский и мужской голос русского. Украинского нет.

Другие синтезаторы требующие установки на комп

Правда некоторые предоставляются облачный сервис.

Cравнение

The MBROLA Project

The aim of the MBROLA project, initiated by the TCTS Lab of the Faculté Polytechnique de Mons (Belgium), is to obtain a set of speech synthesizers for as many languages as possible, and provide them free for non-commercial applications.
Проект выглядит заброшенным. Но вот тут есть список рилейтед проектов Non-commercial TTS systems and components compatible with MBROLA где тоже можно порыться.

eSpeak

C++, open source
eSpeak uses a “formant synthesis” method. This allows many languages to be provided in a small size. The speech is clear, and can be used at high speeds, but is not as natural or smooth as larger synthesizers which are based on human speech recordings. Google has integrated eSpeak, an open source software speech synthesizer for English and other languages, in its online translation service Google Translate. The move allow users of Google Translate to hear translations spoken out loud (text-to-speech) by clicking the speaker icon beside some translations.

Первая версия бесплатного синтезатора речи eSpeak была выпущена в 2006 году. С тех пор компания-разработчик постоянно выпускает все более усовершенствованные версии. Последняя версия была представлена в весной 2013.

eSpeak можно установить под следующие операционные системы: Microsoft Windows, Mac OS X, Linux, RISC OS
Возможна также компиляция кода для Windows Mobile, но делать ее придется самостоятельно.
А вот с мобильной ОС Android программа работает без проблем, хотя русские словари еще не до конца разработаны. Русскоязычных голосов много, можно выбрать на свой вкус.

Festival

Festival — это целая система распознавания и синтеза речи, которая была разработана в эдинбургском университете.
Программы и все модули абсолютно бесплатно и распространяются по системе open source. Скачать их и ознакомиться с демо-версиями можно на официальном сайте университета Эдинбурга.

Русский голос представлен в одном варианте, но звучание довольно хорошее и ясное, без акцента и с правильной расстановкой ударений.
К сожалению, программа пока может быть установлена только в среде API, Linux. Также есть модуль для работы в Mac OS, но русский язык пока поддерживается не очень хорошо.

festvox

The Festvox project aims to make the building of new synthetic voices more systemic and better documented, making it possible for anyone to build a new voice.

Flite: a small, fast run time synthesis engine

Flite (festival-lite) is a small, fast run-time synthesis engine developed at CMU and primarily designed for small embedded machines and/or large servers. Flite is designed as an alternative synthesis engine to Festival for voices built using the FestVox suite of voice building tools.

Вообще, у них там в университете ещё много всякого софта для синтеза Speech Software at CMU, есть смысл поковыряться.

RHVoice

RHVoice синтезатор русской речи с тремя голосами и открытым кодом. Среди исходников видел биндинги к андроиду. Ещё интересно что есть язык эсперанто.
Я так понял что разработчица одна, так что даже не смотрел. Там есть модуль для программы NVDA для слепых, наверное автор программы хотел сделать их мир лучше.
«Наверное, лучшее, что можно найти под линукс. Под виндой тоже работает. Голоса есть.
Речь, на мой взгляд, получается очень естественная, если не учитывать часто неправильные ударения.»

Praat

Praat is a free scientific software program for the analysis of speech in phonetics. It has been designed and continuously developed by Paul Boersma and David Weenink of the University of Amsterdam. It can run on a wide range of operating systems, including various Unix versions, Mac and Microsoft Windows (95, 98, NT4, ME, 2000, XP, Vista). The program also supports speech synthesis, including articulatory synthesis.
Написан на С++, несмотря на то что сайт Web 1.0 последние исходники помечены датой 18 December 2014. Имеет какой-то свой встроенный скриптовый язык.

Epos

http://sourceforge.net/projects/epos/
License: GNU
Last Update: 2013-04-23
Writen in C++
Epos is a language independent rule-driven Text-to-Speech (TTS) system primarily designed to serve as a research tool. Epos is (or tries to be) independent of the language processed, linguistic description method, and computing environment.
Разрабатывался в каком-то чешском университете, сайт уже не работает. Кроме английского и немецкого поддерживает чешский и словацкий, что редкость и кому-то может быть принципиально.

Acapela TTS

Хороший синтезатор с множеством языков. Разработан шведами, так что шведский поддерживается лучше всего причём аж в трёх вариантах. Русский поддерживает.

Есть Cloud API, но не интересовался ценой. В интернете хвалили.

Nuance Vocalizer

Вот здесь можно опробовать движки Ольга, Дмитрий, Милена:
http://www.oddcast.com/home/demos/tts/tts_example.php

Обратите внимание на движок Милена, это премиум голос. Его можно взять тут:
rutracker.org/forum/viewtopic.php?t=4606928
Ещё послушать тут
http://www.Nuance.Com/vocalizer5/flash/index.Html
«Голос звучит очень естественно, речь чистая. Есть возможность установить различные словари, а также подкорректировать громкость, скорость и ударение, что не маловажно.
Как и в случае с Акапелой, программа имеет различные версии для мобильных, автомобильных и компьютерных приложений. Прекрасно подходит для чтения книг.»

Loquendo TTS

Loquendo TTS платный, но есть на торентах.

Встроенные в Windows

Это будет работать не для всех звуковых картах
http://wiki.audacityteam.org/wiki/Mixer_Toolbar_Issues#cp
http://www.pcadvisor.co.uk/how-to/windows/3400328/how-record-windows-audio-on-your-pc-or-laptop/

Microsoft Speech API и прикольная программка CoolSpeech которая его использует.
Microsoft Speech API (SAPI) 5.4 на MSDN
Нужно попробовать.

Apple’s Speech Synthesizer (VoiceOver)

https://www.apple.com/accessibility/osx/voiceover/
http://www.tuaw.com/2012/07/28/mountain-lion-101-updated-high-quality-voice-synthesis/
https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/SpeechOverview/SpeechOverview.html

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

Android

Я так и не понял, андроид сам может синтезировать голос или шлёт запросы на сервер гугла.
http://www.geoffsimons.com/2012/06/7-best-android-text-to-speech-engines.html
http://www.greenbot.com/article/2105862/how-to-get-started-with-google-text-to-speech.html
https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback
http://developer.android.com/reference/android/speech/package-summary.html
https://play.google.com/store/apps/details?id=com.google.android.tts
https://support.google.com/googleplay/answer/1062965?hl=en
http://habrahabr.ru/post/224685/

AT&T Natural Voices

AT&T Natural Voices® Text-to-Speech Demo

I’ve used AT&T Natural Voices which provides JSAPI and MS SAPI hooks. It provides excellent quality voices, a good «general» speech dictionary, many controls over pronunciation, and multiple languages. It’s a little pricey, but works very well.

I used it to read important sensor telemetry to drivers in a mobile sensor application. We had no complaints about the voice quality. It had about 75% out-of-the-box accuracy with scientific terms and a much higher (maybe 90%+) with normal dialogue. We got it up to about 99+% accuracy by using markups (most errors were on scientific terms with unusual phoneme combinations).

It was a bit hard on the processor (we were running on a Pentium-III equivalent machine and it was pushing 50%-75% peak CPU). This uses a native speech engine (Windows, Linux, and Mac compatible) with a Java interface.
There’s a huge variety of voices and languages…

Web Speech API — распознавание и озвучивание текста сразу из броузера

Вообщем вместо тысячи слов смотрите демо
chrome.tts API для броузера
Презентация

Web Speech API Specification — стандарт W3C.

UPD
«С кофеваркой надо разговаривать» Интервью Дениса Филиппова, главного по речевым технологиям в «Яндексе»