Страница 1 из 1

[FAQ] Когда выйдет SAPI 6?

Добавлено: 27 ноя 2018 14:14
balabolka
Microsoft Speech API (версия 5) впервые появился в Windows 2000. Прошло уже столько лет, когда же выйдет новая версия SAPI?


Скорее всего, SAPI 6 никогда не будет выпущен. Фактически, ему на смену уже пришел синтез речи, доступный в Универсальной платформе Windows (UWP).

UWP позволяет создавать и запускать приложения на любых компьютерах под управлением Windows 8, Windows 10 или Windows Mobile (компьютерах, планшетах, Xbox и т.д.). Универсальная платформа содержит набор API для доступа ко всем устройствам компьютера; в том числе, есть API для синтеза речи.

Windows.Media.SpeechSynthesis позволяет получить список голосов, установленных на компьютере (сейчас это тот же список голосов SAPI 5, доступных в "Балаболке"), выбрать голос, прочесть текст вслух или сохранить речь в поток. Есть поддержка языка разметки Speech Synthesis Markup Language (SSML); этот язык предоставляет больше возможностей, чем XML-теги SAPI 5.

Для синтеза речи в UWP доступны настройки, отличающиеся от SAPI 5. Скорость речи изменяется от 0.5 до 6.0 (1.0 - нормальная скорость речи), тембр от 0.0 до 2.0, громкость от 0.0 до 1.0. Можно задать паузу в конце текста (в миллисекундах, по умолчанию 750 мс) или паузу на знаках препинания.

Почему вообще появилась необходимость в Универсальной платформе Windows? Microsoft хочет стандартизировать все приложения, чтобы они разрабатывались по единому образцу и распространялись через Microsoft Store. Сейчас для написания программ для Windows используются Win32 API, .NET Framework, .NET (UWP); каждая программа имеет свой инсталлятор и записывает файлы, куда вздумается. Очевидно, Microsoft хочет прикрыть эту лавочку - и в целях повышения безопасности, и для стандартизации программного обеспечения, и для того, чтобы направить все денежные потоки через свой магазин.

Будет ли создана версия "Балаболки" для UWP? Об этом говорить рано. Пока Microsoft смотрит сквозь пальцы на существование программ, написанных на Win32 API, я вряд ли займусь созданием новой версии программы. Посмотрим, как будет развиваться ситуация.

[FAQ] Когда выйдет SAPI 6?

Добавлено: 27 ноя 2018 18:35
Lecron
А зачем он вообще нужен? Что полезного не реализовано в SAPI5?
balabolka писал(а):
27 ноя 2018 14:14
Пока Microsoft смотрит сквозь пальцы на существование программ, написанных на Win32 API, я вряд ли займусь созданием новой версии программы.
Значит не займетесь никогда.

Немного вбок, но все-таки спрошу. А как реализовано изменение скорости? На этапе алгоритма генерации речи? Или в постпроцессинге, трансформируя звуковую волну (WAV), а-ля SoX/ffmpeg?

[FAQ] Когда выйдет SAPI 6?

Добавлено: 28 ноя 2018 00:44
balabolka
Lecron писал(а):
27 ноя 2018 18:35
А зачем он вообще нужен? Что полезного не реализовано в SAPI5?
В Windows 10 синтез речи - это часть единой платформы. Можно интегрировать синтез речи с другими устройствами и программами Windows.

Еще один важный момент - отказ от тегов SAPI 5 и использование вместо этого SSML. Это даст больше возможностей для управления речью. (SSML можно использовать и в SAPI 5, но не все голоса его поддерживают; поэтому в "Балаболке" текст для чтения никогда не воспринимается как SSML.)

Важно понимать, что дело не в API, а в том, как разработчики голосов будут его поддерживать. Сейчас они ориентируются на SAPI5 (а кто-то даже продолжает поддерживать SAPI 4). Если новый API в Windows предоставит больше возможностей (универсальная платформа развивается в каждом крупном обновлении Windows 10), разница между SAPI 5 и UWP может стать заметней.
Lecron писал(а):
27 ноя 2018 18:35
Значит не займетесь никогда.
Я бы оставил 1% сомнения в этом вопросе.

Но да, Вы правы: пока есть крупные коммерческие проекты, работающие на старом софте, пока существуют старые программные системы, управляющие банками или предприятиями, поддержка Win32 API не исчезнет. Это будет очень долгий процесс перехода.
Lecron писал(а):
27 ноя 2018 18:35
Немного вбок, но все-таки спрошу. А как реализовано изменение скорости?
Не знаю. Надо расспросить разработчиков из Microsoft и разработчиков компьютерных голосов.

Предполагаю, что сам API ничего не делает, вся работа по изменению скорости речи возложена на речевой движок. Старые голоса, скорее всего, будут использовать ближайшее целое значение для скорости (в диапазоне от -10 до 10); новые версии голосов, возможно, научатся корректно обрабатывать дробные значения скорости.

Надо тестировать на примерах.