L h tts3000 russian что это за программа

Содержание

Мы Опубликовали Качественный, Простой, Доступный и Быстрый Синтез Речи

Вокруг темы синтеза речи сейчас много движения: на рынке есть огромное число тулкитов для синтеза, большое число закрытых коммерческих решений за АПИ (как на современных технологиях, так и на более старых, т.е. «говорилки») от условных GAFA компаний, большое количество американских стартапов, пытающихся сделать очередные аудио дипфейки (voice transfer).

Но мы не видели открытых решений, которые бы удовлетворяли одновременно следующим критериям:

Мы попытались учесть все эти пункты и представить комьюнити свое открытое некоммерческое решение, удовлетворяющее этим критериям. По причине его публичности мы не заостряем внимание на архитектуре и не фокусируемся на каких-то cherry picked примерах — вы можете оценить все сами, пройдя по ссылке.

Краткий Обзор Решений

Данная статья не ставит своей целью глубокий технический обзор всех доступных решений. Мы хотим просто обрисовать некий ландшафт из доступных вариантов с минимальной степенью готовности. Понятно, что мы не рассматриваем многочисленные тулкиты, а смотрим в первую очередь какие есть более-менее готовые решения с ненулевой библиотекой голосов и подобием поддержки / комьюнити:

Конкатенативные модели (появившиеся до DL бума). Из того, что хоть как-то поддерживается и живо и можно запустить «as-is» без археологических раскопок, я нашел только rhvoice (я глубоко не копал, но есть целые форумы, посвященные использованию голосов из Windows, но вряд ли это можно назвать поддерживаемым решением). На момент, когда я пользовался проектом ради интереса, он по сути был заброшен, но потом у него появился новый «хозяин». К плюсам такого рода решений можно отнести их скорость и нетребовательность к ресурсам (исключая ресурсы, чтобы заставить это работать). Очевидный и основной минус — звучит как говорилка. Менее очевидный минус — довольно тяжело оценить стоимость обладания. Качество звучания: 3+ по пятибалльной шкале;

Tacotron2 + WaveNet (оригинальный WaveNet принимал на вход лингвофичи, но для такотрона поменяли на более удобные мелспектрограммы). Основная проблема — очень медленный инференс ввиду авторегрессионности модели и необходимость запретительно большого количества ресурсов и времени. Качество звучания: 4+;

Tacotron2 + WaveRNN (тоже с переходом от лингвофичей к спектрограммам). Вокодер заметно быстрее предыдущего: при использовании всех хаков можно получить даже риалтайм синтез без GPU, правда естественность звука несколько просядет. Качество звучания: 3.5-4;

Tacotron2 + Parallel WaveNet. Упомянутый выше медленный вокодер был использован в качестве учителя для получения новой довольно быстрой параллельной модели вокодера: с ней стал возможен синтез быстрее риалтайма, но все еще на мощных GPU. Из недостатков — дистилляция требует качественную учительскую модель и соответствующую схему обучения. Качество звучания: 4+;

Tacotron2 + multi-band WaveRNN. Тоже развитие предыдущих идей, тоже распараллеливание в некотором смысле — здесь доступен синтез быстрее риалтайма уже на CPU. Однако, не слишком популярная работа, меньше имплементаций и поддержки, хотя некоторые подходы хороши и были успешно использованы в более поздних моделях; Качество звучания: 3.5-4+;

Tacotron2 + LPCNet. Интересная идея про сочетание DL и классических алгоритмов, что может дать буст по скорости до подходящего для продакшена уровня и на CPU, но требует вдумчивого допиливания для качественных результатов. Качество звучания: 3.5-4+;

Многочисленные решения на базе Tacotron2 + Waveglow от Nvidia как нынешний стандарт для задачи синтеза речи. Никто не пишет про свой «секретный соус» (например как 15.ai делает голос по 15 минутам и сколько там моделей в цепочке). Есть много имплементаций и репозиториев, которые «копируют» чужой код. Может звучать на cherry-picked примерах неотличимо от живых людей, но когда смотришь реальные модели от комьюнити, качество заметно варьируется, а детали улучшенных решений не раскрываются. Архитектурно к такотрону и его аналогам по скорости и цене обладания претензий нет, но Waveglow очень прожорлив к ресурсам как на тренировке, так и в продакшене, что делает его использование по сути нецелесообразным. Качество звучания: 3.5-4+;

Замена Tacotron2 => FastSpeech / FastSpeech 2 / FastPitch, то есть уход к более простой сетке (на базе forced-align от такотрона и миллион более хитрых и сложных вариантов). Из полезного дает контроль темпа речи и высоты голоса, что неплохо, вообще упрощает и делает более модульной конечную архитектуру. Немаловажно, что сетка перестает быть рекуррентной, что открывает просторы для оптимизаций по скорости. Качество звучания: 3.5-4+;

Оценки Качества и Примеры Аудио

Чтобы не вдаваться в дебри, мы поступили максимально просто: синтезировали аудио из валидационной выборки датасетов (

200 файлов на спикера), смешали с оригинальными аудио этой же выборки и дали группе из 24 людей для оценки качества звучания по пятибалльной шкале. Для 8kHz и 16kHz оценки собирали раздельно, градация оценок — [1, 2, 3, 4-, 4, 4+, 5-, 5] — с большей детализацией для более качественного звука.

Всего было поставлено 37,403 оценок. 12 человек сделали оценку полностью. Еще 12 людей успели проставить только от 10% до 75% оценок. Дальше для каждого спикера мы просто посчитали среднее (в скобочках приведено стандартное отклонение). Расчет среднего от медиан по каждому аудио завышает средние оценки на 0.1 — 0.2 балла, но не влияет на отношения. Показательны естественно скорее отношения средних баллов друг к другу. Дисперсия довольно высокая, но оценки пользователей отличались сильно и мы решили не выбрасывать никакие, т.к. оценки одного пользователя были консистентными друг с другом. По ряду соображений мы провели такую оценку только на своих уникальных голосах:

Спикер Оригинал Синтез Отношение Примеры
aidar_8khz 4.67 (.45) 4.52 (.55) 96.8% link
baya_8khz 4.52 (.57) 4.25 (.76) 94.0% link
kseniya_8khz 4.80 (.40) 4.54 (.60) 94.5% link
aidar_16khz 4.72 (.43) 4.53 (.55) 95.9% link
baya_16khz 4.59 (.55) 4.18 (.76) 91.1% link
kseniya_16khz 4.84 (.37) 4.54 (.59) 93.9% link

Мы просили людей в первую очередь оценивать естественность звучания речи (а не качество звука). Нас удивило, что по расспросам обычные люди на своих ежедневных девайсах не особо слышат разницу между 8 kHz и 16 kHz (что подтверждается оценками)! Самые низкие абсолютные оценки и самое низкое отношение у Байи. Самые высокие абсолютные оценки — у Ксении, а относительные — у Айдара. Тут важно отметить, что у Байи меньше поставлен голос, но поэтому он звучит более по-человечески за счет этого. У Байи также выше дисперсия оценок.

Ручной просмотр аудио с большими расхождениями показывает ошибки спикеров, ошибки такотрона, ошибочные паузы (тоже вследствие ошибок такотрона), имена собственные и сложные слова, которые вообще непонятно как читать. Естественно 75% таких расхождений в синтезе (а не оригинале) и частота дискретизации особо не влияет.

Если мы пытались дать численную оценку естественности, то еще хорошо бы оценить «неестественность» или «роботизированность» голоса. По идее ее можно оценивать, давая людям пару аудио на выбор и прося выбрать между ними. Но мы пошли дальше и по сути применили «двойной слепой тест». Мы в случайном порядке дали людям поставить оценки «одному и тому же аудио» 4 раза — оригинал и синтез с разной частотой дискретизации. Для участников исследования, разметивших весь датасет, получается такая таблица:

Сравнение Хуже Одинаково Лучше
16k против 8k, оригинал 957 4811 1512
16k против 8k, синтез 1668 4061 1551
Оригинал против синтеза, 8k 816 3697 2767
Оригинал против синтеза, 16k 674 3462 3144

Тут напрашивается несколько выводов:

Можете оценить сами, как это звучит, как для наших уникальных голосов, так и для спикеров из внешних источников (больше аудио для каждого спикера можно синтезировать в colab.

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

Источник

Tts3000 что это за программа

L&H tts 3000 Russian (Lernout & Hauspie) — это русскоязычный синтезатор стандарта SAPI4.

Данный синтезатор включает в себя два русских голоса: Борис и Светлана. В синтезаторе реализована регулировка скорости и высоты речи.

К сожалению, из-за малого объёма голосовой базы его речь не лишена недостатков. Данный синтезатор имеет определённую картавость в произношении, однако к его плюсам можно отнести довольно приличное произношение не только русского, но и английского текста, которое позволяет использовать его и для чтения англоязычных документов.

Для использования L&H tts 3000 может потребоваться системный компонент MS SAPI4.

Использование и распространение материалов сайта означает, что пользователь принял условия лицензионного соглашения.

L h tts3000

Автор Админ задал вопрос в разделе Программное обеспечение

L&H TTS3000 Deutsch что это такое на win 7? можно ли удалять или нет? и получил лучший ответ

Установка, настройка и работа в компьютерных программах.

Лучшие эксперты в этом разделе

solowey
Статус: Специалист
Рейтинг: 273
CradleA
Статус: Профессор
Рейтинг: 57
FOXhunter
Статус: Профессионал
Рейтинг: 20
Перейти к консультации №:

Уважаемые знатоки, подскажите.

Запустил в Панели управления утилиту ( Установка и удаление программ ) и обнаружил у себя в системе программы

1.L&H TTS3000 Russian
2.L&H TTS3000 Italiano
3.L&H TTS3000 Fransail
4.L&H TTS3000 Espacol
5.L&H TTS3000 Deutsch
6.L&H TTS3000 TruVoice American English TTS Engine

Состояние: Консультация закрыта

Консультировал: Gravesnake
Дата отправки: 08.01.2010, 05:40

0

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

0

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Источник

Обзор мобильных Text-To-Speech движков

Если Ваш родной язык не английский и Вы не пишете приложения только для iPhone, то Вам придется достаточно трудно, если Вы захотите найти подходящий инструментарий для разработки т.н. мобильных «voice-enabled» приложений.

В данном обзоре приведена классификация и описаны самые достойные из рода mobile TTS engine.

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

Коммерческие движки

SVOX Mobile TTS


Цена: n/a
Языки: 26, включая русский
Субъективная оценка качества звучания: высокое
Мобильные ОС: Android, Symbian, Windows CE/Windows Mobile, BREW
Возможность разработки коммерческих продуктов: есть

Компания SVOX имеет наиболее «вкусный» с технической точки зрения продукт — SVOX Mobile TTS. Однако, поскольку компания работает в основном в B2B сегменте, на мои два письма с запросом цены они так и не ответили.

Acapela TTS


Цена: 2800€ плюс так называемая run-time license, за которую в самом лучшем случае придется платить по 49€ за каждое распространенное приложение
Языки: 23, включая русский
Субъективная оценка качества звучания: высокое
Мобильные ОС: Symbian, Windows CE/Windows Mobile, Embedded Linux, iOS
Возможность разработки коммерческих продуктов: есть

Сотрудники Acapela Group оказались намного более общительными и ответили буквально через полчаса после заполнения вот этой заявки.

Цена, указанная в шапке, относится к таким операционным системам как Windows Mobile и Symbian, однако бизнес-модель Acapela разнится в зависимости от выбранной ОС. К примеру, наиболее сильно они продвигают направление iOS, для которого сделан отдельный сайт. Там можно зарегистрироваться и бесплатно получить evaluation версию их движка. Цена голого SDK для бывшей iPhone OS составляет 250€. Так же с каждого проданного Вами в App Store приложения снимаются немалые проценты.

Отмечу, что Acapela предоставляет «облачный» синтез речи, а так-же портирование SDK под любую платформу.

Loquendo Embedded TTS


Цена: 3000€ плюс проценты с каждого проданного Вами мобильного приложения
Языки: 26, включая русский
Субъективная оценка качества звучания: высокое
Мобильные ОС: Android, Symbian, Windows CE/Windows Mobile, Embedded Linux, iOS, Maemo, Moblin, MeeGo, PalmOS
Возможность разработки коммерческих продуктов: есть

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

Их движок отвечает спецификации SSML 1.0 рекомендованной W3C.

Sakrament TTS


Цена: 1500€ для одной ОС, при покупке пакета сразу для двух языков предоставляется скидка в размере 25%, что составляет 2250€
Языки: английский, русский
Субъективная оценка качества звучания: среднее
Мобильные ОС: Symbian, Windows Mobile
Возможность разработки коммерческих продуктов: есть

Качества синтеза речи Sakrament TTS вполне достаточно, что бы озвучивать короткие фразы типа номеров телефонов или названий приложений. Описание всех версий SDK можно получить здесь.

Свободные движки

Flite

Цена: нет
Языки: английский плюс возможность компиляции языков FestVox
Субъективная оценка качества звучания: низкое
Мобильные ОС: Android, Windows CE/Windows Mobile, iOS, PalmOS
Возможность разработки коммерческих продуктов: есть (CMU licence)

В мире настольных систем хорошо известен синтезатор речи Festival. Он имеет порт под названием Flite для мобильных устройств и встраиваемых систем, который распространяется под их собственной X11-like лицензией, позволяющей свободно распространять данное ПО кому угодно, а так же строить на его основе как коммерческие, так и свободные приложения. Существуют порты для Windows CE/Windows Mobile, PalmOS, Android и iOS.

eSpeak


Цена: нет
Языки: 39, включая русский
Субъективная оценка качества звучания: среднее
Мобильные ОС: Android, Windows CE/Windows Mobile
Возможность разработки коммерческих продуктов: нет (GNU GPL)

Инструкция для компиляции движка под WM включена в дистрибутив, однако на этой платформе eSpeak имеет одно существенное ограничение – генерация голоса возможна только в WAV файл. Собранный TTS engine для Windows Mobile можно получить здесь.

eSpeak портирован на Android. Самый простой способ его попробовать — это установить из Android Market’а приложение TTS Service Extended, которое позволяет переключаться между встроенным движком и eSpeak. Данный TTS движок распространяется на условиях GNU GPL.

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

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

Symbian


Цена: нет
Языки: английский
Субъективная оценка качества звучания: крайне низкое
Возможность разработки коммерческих продуктов: есть

Встроенный TTS от Symbian Foundation скрывается в классе CMdaAudioPlayerUtility. Хотя в его документации ничего об этом не сказано, он все же позволяет синтезировать речь. К сожалению, русский язык не поддерживается. Качество генерации английской речи очень низкое. Без подготовки довольно трудно понять, что именно он произнес.

Дополнительные языковые пакеты можно загрузить здесь, однако список поддерживаемых телефонов крайне мал. Установка пакетов для русского языка на устройство под управлением Symbain OS S60 5th не дала ожидаемых результатов, встроенный TTS так и не заговорил по-русски.

Отмечу, что имеется достаточно удобное расширение API под названием NSS TTS Utility API, описание которого можно найти здесь.

Android


Цена: нет
Языки: английский, французский, немецкий, итальянский, испанский
Субъективная оценка качества звучания: среднее
Возможность разработки коммерческих продуктов: есть

Встроенная функциональность синтеза речи в Android доступна с версии 1.6. Прекрасное введение в тему можно найти в блоге разработчиков. Android TTS API является не чем иным, как оберткой над SVOX Pico, русский язык, которым, к сожалению, не поддерживается.

Заключение

Выводы каждому придется делать в зависимости от требований к разрабатываемому продукту. Для коммерческих решений крайне важно качество синтеза речи, поэтому выбирать стоит из двух движков – Acapela TTS и Loquendo Embedded TTS. При выборе движка для open source проекта крайне важную роль будет играть список целевых ОС.

Лично для себя я выбрал eSpeak, поскольку мой проект академического толка и я могу себе позволить использование продукта лицензированного по GNU GPL.

Источник

L h tts3000 russian что это за программа

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

Чемпионы рейтинга экспертов в этой рассылке

F®ost
Статус: Советник
Рейтинг: 6423
• повысить рейтинг »
Гуревич Александр Львович
Статус: Специалист
Рейтинг: 3294
• повысить рейтинг »
Black Cloud
Статус: Бакалавр
Рейтинг: 3282
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Помощь пользователю ПО / Другие программы

P.S. ОС XP sp3, о бычно использую в качестве проигрывателя GOMPlayer.

Уважаемые знатоки, подскажите.

Программы вот эти
1 Microsoft Visual C ++2005 Redistributable (8.0.50727.42)
2. Microsoft Visual C ++2005 Redistributable (8.0.56336)

С какими приложениями их установил не помню.

Уважаемые знатоки, подскажите.

Запустил в Панели управления утилиту ( Установка и удаление программ ) и обнаружил у себя в системе программы

1.L&H TTS3000 Russian
2.L&H TTS3000 Italiano
3.L&H TTS3000 Fransail
4.L&H TTS3000 Espacol
5.L&H TTS3000 Deutsch
6.L&H TTS3000 TruVoice American English TTS Engine

Оценка ответа: 5
Комментарий к оценке:
Спасибо за обяснение.

Оценка ответа: 5
Комментарий к оценке:
Спасибо за полный ответ всё для себя прояснил.

Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!

Задать вопрос экспертам этой рассылки »

Скажите «спасибо» эксперту, который помог Вам!

* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. ( полный список тарифов )
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.

Источник

Технологии ASR и TTS для прикладного программиста: теоретический минимум

Введение

В последние несколько лет голосовые интерфейсы окружают нас все плотнее. То, что когда-то демонстрировалось только в фильмах о далеком будущем, оказалось вполне реальным. Дело дошло уже до встраивания движков для синтеза (Text To Speech — TTS) и распознавания (Automatic Speech Recognition — ASR) речи в мобильные телефоны. Более того, появились вполне доступные API для встраивания ASR и TTS в приложения.

Ныне создавать программы с голосовым интерфейсом может любой желающий (не поскупившийся заплатить за движок). Наш обзор будет посвящен именно использованию имеющихся движков (на примере Nuance) а не созданию таковых. Также будут даны общие сведения необходимые каждому программисту впервые сталкивающемуся с речевыми интерфейсами. Статья также может быть полезна руководителям проектов, пытающимся оценить целесообразность интеграции голосовых технологий в их продукты.
Итак, начнем…

Но для затравки — анекдот:
Урок русского языка в грузинской школе.
Учитель говорит: «Дети, запомните: слова сол, фасол и вермишел пишутся с мягким знаком, а слова вилька, булька, тарелька – без мягкого знака. Дети, запомните, потому что понять это невозможно!»

Раньше этот анекдот казался мне смешным. Теперь — скорее жизненным. Почему так? Сейчас постараюсь объяснить…

1. Фонемы

Говоря о речи (уже смешно) нам прежде всего придется разобраться с понятием фонемы. Говоря попросту — фонема это отдельный звук, который может быть произнесен и распознан человеком. Но такого определения конечно мало, ибо произнести можно очень много звуков, а набор фонем в языках ограничен. Хочется иметь более строгое определение. А значит — нужно идти на поклон к филологам. Увы, филологи и сами не могут сойтись во мнениях что это такое (да им и не особо надо), но имеют несколько подходов. Один связывает фонемы со смыслом. Например, английская Wiki говорит нам «The smallest contrastive linguistic unit which may bring about a change of meaning». другие — с особенностями восприятия. Так, наш соотечественник Н. Трубецкой писал «Фонологические единицы, которые с точки зрения данного языка невозможно разложить на более краткие следующие друг за другом фонологические единицы мы называем фонемами». И в том и в другом определении есть важные для нас уточнения. С одной стороны, изменение фонемы может (но не обязано) поменять смысл слова. Так, «код» и «кот» — будут восприняты как два разных слова. С другой — вы можете произнести «музей» или «музэй» и смысл не изменится. Разве что ваши собеседники смогут как-то классифицировать ваш акцент. Важна и неделимость фонем. Но, как верно замечено у Трубецкого — она может зависеть от языка. Там, где человек одной национальности слышит один звук, кто-то другой может услышать два, следующих друг за другом. Хочется, однако, иметь фонетические инварианты, пригодные для всех языков, а не только какого-то одного.

2. Фонетический алфавит

Чтобы как-то утрясти определения еще в далеком 1888 году был создан международный фонетический алфавит (IPA). Алфавит этот хорош тем, что не зависит от конкретного языка. Т.е. рассчитан как бы на «сверхчеловека» который может произносить и распознавать звуки практически всех имеющихся живых (и даже мертвых) языков. Алфавит IPA постепенно изменялся вплоть до наших дней (2005 год). Поскольку создан он был в основном в докомпьютерную эпоху, то филологи рисовали символы обозначающие звуки как бог на душу положит. Они конечно как-то ориентировались на латинский алфавит, но весьма и весьма условно. Как результат сейчас символы IPA хоть и есть в Unicode, но вводить их с клавиатуры весьма непросто. Тут читатель может спросить — а зачем вообще нужен IPA простым людям? Где я могу увидеть хотя бы примеры слов, записанных фонетически? Мой ответ — простому человеку IPA в общем-то знать не обязательно. Но, при всем этом увидеть его можно очень легко — во многих статьях Wiki, касающихся географических названий, фамилий и имен собственных. Зная IPA вы всегда можете сверить правильность произношения того или иного названия на незнакомом вам языке. Например, хотите произносить «Париж» как француз? Вот вам пожалуйста — [paʁi].

3. Фонетическая транскрипция

Внимательный пользователь Wiki может правда заметить, что иногда странные значки фонетического алфавита стоят внутри квадратных скобок — [mɐˈskva], а иногда — внутри косых черт (слэшей) — /ˈlʌndən/. В чем же разница? В квадратных скобках записывается т.н. narrow, сиречь «узкая» транскрипция. В отечественной литературе она зовется фонетической. В слэшах же пишется broad, т.е. «широкая» или фонематическая транскрипция. Практический смысл здесь следующий: фонетическая транскрипция дает предельно точное произношение, которое в некотором смысле идеально и независимо от акцента говорящего. Иными словами — имея фонетическую транскрипцию мы можем сказать «кокни произнесет это слово так». Фонематическая же транскрипция позволяет вариации. Так, австралийском и канадском английском произносимый звук при одинаковой записи в // может быть другим. По правде говоря, даже узкая транскрипция все еще не однозначна. Т.е. довольно далека от waw-файла. Мужской, женский и детский голос произнесут одну и ту же фонему по-разному. Также не принимается во внимание общая скорость речи, ее громкость и базовая высота голоса. Собственно, эти отличия и делают задачу генерации и распознавания речи нетривиальной. Далее по тексту я всегда буду пользоваться IPA в узкой транскрипции, если не оговорено другое. При этом прямое использование IPA я постараюсь свести к разумному минимуму.

4. Языки

Каждому живому естественному языку свойственен свой набор фонем. Более точно — это свойство речи, ибо вообще говоря, можно знать язык не имея возможности произносить слов (как обучаются языку глухо-немые). Фонетический состав языков различен, примерно так же как различны алфавиты. Соответственно, разнится и фонетическая сложность языка. Она складывается из двух составляющих. Во-первых, сложность преобразования графем в фонемы (мы помним, что англичане пишут «Манчестер» а читают «Ливерпуль») и сложности произнесения самих звуков (фонем) во-вторых. Сколько фонем обычно содержит язык? Несколько десятков. С детства нас учили что русское произношение простое как три копейки, и все читается как пишется, в отличии от европейских языков. Конечно нас обманывали! Если читать слова буквально так, как они написаны, вас хоть и поймут, но не всегда верно. Но уж русским точно не посчитают. Кроме того, в дело вступает такая жуткая для европейца вещь как ударение. Вместо того, чтобы ставить его в начале (как англичане) или в конце (как французы) у нас оно гуляет по всему слову как бог на душу положит, при этом меняя смысл. Дoрoги и дороги — два различных слова, и даже части речи. Сколько фонем в русском языке? Nuance насчитывает их 54 штуки. Для сравнения — в английском всего 45 фонем, а во французском и того меньше — 34. Не зря аристократы считали его легким для изучения языком пару веков назад! Конечно — русский не самый сложный язык в Европе, но один из (заметьте, я еще молчу о грамматике).

5. X-SAMPA и LH+

Поскольку вводить фонетическую транскрипцию с клавиатуры людям хотелось давно, еще до широкого распространения Unicode, то были разработаны нотации, позволяющие обойтись только символами таблицы ASCII. Две наиболее распространенных из них это X-SAMPA — творение профессора Джона Уэлса, и LH+ — внутренний формат компании Lernout & Hauspie, технологии которой были в дальнейшем куплены Nuance Communications. Между X-SAMPA и LH+ есть довольно существенная разница. Формально, X-SAMPA — это просто нотация, позволяющая по определенным правилам записывать те же фонемы IPA, только с помощью ASCII. Иное дело LH+. В некотором смысле — LH+ является аналогом широкой (фонематической) транскрипции. Дело в том, что для каждого языка, один и тот же символ LH+ может обозначать разные фонемы IPA. С одной стороны — это хорошо, т.к. укорачивается запись, и не нужно кодировать все возможные символы IPA, с другой — возникает неоднозначность. И каждый раз для трансляции в IPA нужно держать перед собой таблицу соответствия. Однако, печальнее всего то, что строку записанную в LH+ может правильно произнести только «голос» для определенного языка.

6. Голоса

Нет, речь пойдет не о тех голосах, которые часто слышат в голове программисты, которые в прошлом написали слишком много плохого кода. Скорее о тех, которые так часто ищут на трекерах и файлопомойках обладатели навигаторов и прочих мобильных устройств. Голоса эти имеют даже имена. Слова «Милена» и «Катерина» многое говорят бывалому пользователю голосовых интерфейсов. Что же это такое? Грубо говоря — это наборы данных, подготовленные различным компаниями (типа той же Nuance) которые позволяют компьютеру преобразовывать фонемы в звук. Голоса бывают женские и мужские, и стоят немалых денег. В зависимости от платформы и фирмы-разработчика с вас могут потребовать 2-5 тыс. долларов за голос. Таким образом, если вы хотите создать интерфейс хотя бы на 5 наиболее распространенных европейских языках, то счет может пойти на десятки тысяч. Разумеется, речь именно о программном интерфейсе. Итак, голос специфичен для языка. Отсюда же происходит и привязка его к фонетической транскрипции. Это непросто осознать по-первости, но анекдот в начале статьи — сущая правда. Люди с одним родным языком обычно просто не в состоянии произнести фонемы другого, которых нет в их родном языке. И, что еще хуже — не только отдельные фонемы но и определенные их сочетания. Так, если в твоем языке слово никогда не заканчивается на мягкое «л» то и произнести его мы не сможем (поначалу).

То же самое и с голосами. Голос заточен на произнесение только тех фонем, которые имеются в языке. Более того — в конкретном диалекте языка. Т.е. голоса для канадского французского и французского французского будут не только отличаться по звучанию, но и иметь разный набор произносимых фонем. Это, кстати, удобно фирмам производителям движков ASR и TTS, т.к. каждый язык можно продавать за отдельные деньги. С другой стороны — можно понять и их. Создание голоса дело довольно трудоемкое, и затратное по деньгам. Возможно именно по этому до сих пор не существует сколь-нибудь широкого рынка Open Source решений для большинства языков.

Казалось бы, ничто не мешает создать «универсальный» голос, который будет уметь произносить все фонемы IPA, и таким образом решит проблему многоязычных интерфейсов. Но этого почему-то никто не делает. Скорее всего, это и невозможно. Т.е. говорить-то он может и будет, но каждый носитель языка будет недоволен недостаточной «натуральностью» произношения. Звучать это будет примерно как русский в устах мало практиковавшегося англичанина или английский в устах француза. Так что, если хотите многоязычности — приготовьтесь раскошелиться.

7. Пример использования TTS API

Чтобы дать читателю представление о том, как процесс работы с TTS выглядит на нижнем уровне (используется С++) я приведу пример синтеза речи на базе движка Nuance. Разумеется это неполный пример, его нельзя не только запустить но даже скомпилировать, но представление о процессе он дает. Все функции кроме TTS_Speak() нужны как «обвязка» для нее.

TTS_Initialize() — служит для инициализации движка
TTS_Cleanup() — для деинициализации
TTS_SelectLanguage — выбирает язык и настраивает параметры распознавания.

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

Как может заметить читатель, код довольно громоздок, и простая (казалось бы) функциональность требует большого числа предварительных настроек. Увы, это обратная сторона гибкости движка. Разумеется, API других движков и для других языков может быть существенно проще к компактнее.

8. Снова фонемы

Поглядев на API, читатель может спросить — а зачем нам вообще нужны фонемы, если TTS (Text-To-Speech) умеет прямо конвертировать текст в речь. Умеет, но тут есть одно «но». Хорошо преобразуются в речь знакомые движку слова. Гораздо хуже дело обстоит со словами «незнакомыми». Такими как топонимы, имена собственные и т.п. Это особенно хорошо видно на примере многонациональных стран, таких к примеру, как Россия. Названия городам и весям на территории одной вечно-шестой части суши давались разными людьми, на разных языках и в разное время. Необходимость записать их русскими буквами сыграла плохую шутку с национальными языками. Фонемы татар, ненцев, абхазцев, казахов, якутов, бурят оказались втиснуты в прокрустово ложе русского языка. В котором хоть и много фонем, но все же недостаточно чтобы передать все языки народов бывшего Союза. Но дальше хуже — если фонетическая запись хоть как-то похожа на оригинал, то прочтение движком TTS названия типа «Кючук-Кайнарджи» ничего кроме смеха не вызывает.

Однако, наивно думать что это только проблема русского языка. Аналогичные сложности есть и в более однородных по населению странах. Так, во французском языке буквы p, b, d, t, s в конце слов обычно не читаются. Но если мы возьмем топонимы, то тут уже вступают в силу местные традиции. Так, в слове Paris ‘s’ в конце дейстивтельно не произносится, а в слове ‘Valluris’ — наоборот. Разница в том, что Париж расположен на севере Франции, а Валлорис — на юге, в Провансе, где правила произношения несколько другие. Именно поэтому, все же желательно иметь фонетическую транскрипцию для слов. Обычно карты поставляются с ней. Правда, единства в формате не наблюдается. Так, NavTeq традиционно использует транскрипцию X-SAMPA, а TomTom — LH+. Хорошо, если ваш TTS-движок воспринимает обе, а если нет? Тут приходится извращаться. Например — конвертировать одну транскрипцию в другую, что само по себе нетривиально. Если же фонетической информации вовсе нет, то движок имеет собственные методы ее получения. Если говорить о движке Nuance — это «Data Driven Grapheme To Phoneme» (DDG2P) и «Common Linguistic Component» (CLC). Однако использование этих вариантов — уже крайняя мера.

9. Специальные последовательности

Nuance дает не только возможность произносить текст или фонетическую запись, но и динамически переключаться между ними. Для этого используется escape-последовательность вида: /+

Вообще, с помощью escape-последовательностей можно задавать множество параметров. В общей форме это выглядит так:

\x1b\rate=110\ — устанавливает скорость произношения
\x1b\vol=5\ — устанавливает громкость
\x1b\audio=«beep.wav»\ — вставляет в звуковой поток данные из wav-файла.

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

10. Словари

11. Распознавание

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

Воспринимая колебания звука, напоминающие нам голос мы сначала пытаемся делить его на фонемы, вычленять знакомы звуки, которые должны у нас сложиться в слова. Если язык знаком нам, то это легко получается, если нет — то скорее всего даже «правильно» разложить речь на фонемы не удастся (помните историю про «Алла, я в бар!»). Там где нам слышится одно, произносящему — совсем другое. Происходит это потому, что годами наш мозг «натаскивался» на определенные фонемы, и со временем привык воспринимать только их. Встречая незнакомый звук, он пытается подобрать фонему родного языка [языков] наиболее близкую к услышанной. В каком-то смысле это похоже на метод векторного квантования применяемый в кодеках речи типа CELP. Не факт, что такая аппроксимация будет удачной. Именно поэтому, «удобными» для нас будут именно «родные» фонемы.

Помните, еще при СССР, учась в школе, и встречаясь с иностранцами мы пытались «транслитерировать» свое имя, говоря:
«Май нэйм из бОрис пEтрофф»
Учителя тогда ругали нас, говоря — зачем коверкаешь свою фамилию? Думаешь ему от этого понятней будет? Говори по-русски!

Увы, они и тут нас обманывали или заблуждались… Если вы смогли произнести свое имя на английский/немецкий/китайский лад, то носителю языка будет действительно легче его воспринять. Китайцы поняли это давно, и для общения с западными партнерами берут себе специальные «европейские» имена. В машинном распознавании, тот или иной язык описывается так называемой акустической моделью. Перед распознаванием текста, мы должны загрузить акустическую модель определенного языка, тем самым дав понять программе, какие фонемы ей ждать на входе.

Вторая проблема не менее сложна. Вернемся снова к нашей аналогии с живым человеком. Слушая собеседника мы подсознательно выстраиваем в голове модель того, что он скажет дальше, сиречь, создаем контекст разговора. И если ВНЕЗАПНО вставлять в повествование слова выпадающие из контекста (например «эвольвента», когда речь идет о футболе), можно вызвать у собеседника когнитивный диссонанс. Грубо говоря, у компьютера этот самый диссонанс происходит постоянно, ибо он никогда не знает чего ожидать от человека. Человеку проще — он может переспросить собеседника. А что делать компьютеру? Чтобы решить эту проблему и дать компьютеру верный контекст, применяются грамматики.

12. Грамматики

Грамматики (обычно заданные в форме BNF) как раз дают компьютеру (точнее движку ASR) представление о том, чего ждать от пользователя в данный конкретный момент. Обычно — это несколько альтернатив объединенных через ‘или’, но возможны и более сложные грамматики. Вот пример грамматики для выбора станций метро Казани:

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

Насколько велика может быть грамматика? Достаточно велика. Скажем, в наших экспериментах 37 тысяч альтернатив распознаются на приемлемом уровне. Гораздо хуже обстоит дело со сложными и разветвленными грамматиками. Время распознавания растет, а качество падает, причем зависимость от длинны грамматики нелинейна. Поэтому мой совет — избегайте сложных грамматик. Во всяком случае пока.

Грамматики (как и контексты) бывают статическими и динамическими. Пример статической грамматики вы уже видели, она компилируется заранее и хранится во внутреннем бинарном представлении движка. Однако порой контекст меняется во время интеракции с пользователем. Характерные пример для навигации — выбор города по первым буквам. Множество возможных вариантов для распознавания здесь меняется с каждой введенной буквой, соответственно, контекст распознавания надо постоянно перестраивать. Для этих целей и используются динамические контексты. Грубо говоря, программист компилирует грамматики «на лету» и подсовывает их движку прямо по ходу выполнения программы. Разумеется, если речь идет о мобильном устройстве, скорость обработки будет не слишком велика, так что придется ограничиться грамматиками небольшого размера (порядка 100 слов) чтобы пользовательский интерфейс не подвисал.

13. Пример использования ASR API

Распознавание текста не так однозначно, как синтез. Если пользователь просто помолчит перед микрофоном — нам придется распознавать окружающий шум. Если произнесет что-то типа «э-э-э-э» то распознавание тоже скорее всего будет неуспешным. В лучшем случае, ASR обычно возвращает нам набор вариантов (называемых еще гипотезами). Каждая гипотеза имеет определенный вес. Если грамматика большая, то вариантов распознавания может быть довольно много. В этом случае имеет смысл последовательно произнести гипотезы (например, первые пять по убыванию достоверности) и попросить пользователя выбрать одну из них. В идеале, при короткой грамматике («да»|«нет») нам вернется один вариант с высоким показателем достоверности.

Пример приведенный ниже содержит следующие функции:

ConstructRecognizer() — создает «распознаватель» и настраивает его параметры
DestroyRecognizer() — уничтожает «распознаватель»
ASR_Initialize() — инициализирует движок ASR
ASR_UnInitialize() — деинициализирует движок ASR
evt_HandleEvent — обрабатывает события генерируемые thread-ом «распознавателя»
ProcessResult() — печатает результаты распознавания

Очевидно, как и в случае TTS, код довольно велик, и предварительные действия занимают много места. И это еще не полностью рабочий код! При публикации я выкинул много лишнего. Все это еще раз показывает тем, кто дочитал до этого места, что использование технологии голосового ввода/вывода требует довольно высокого «порога вхождения».

14. Поточное распознавание (диктовка)

Последним словом техники сейчас является поточное распознавание, или dictation. Технология уже доступна на современных смартфонах под Android и iOS. В том числе — в виде API. Здесь программисту нет нужды указывать контекст распознавания создавая грамматики. На входе имеется речь — на выходе, распознанные слова. К сожалению, детали того, как этот метод работает пока мне недоступны. Процесс распознавания идет не на самом устройстве, а на сервере, куда голос передается и оттуда же получается результат. Хочется однако верить, что по прошествии лет технология будет доступна и на клиентской стороне.

Источник

Операционные системы и программное обеспечение