Можно ли переключаться между голосами с помощью тегов SSML при преобразовании текста в речь в Windows?

#windows #text-to-speech #sapi

Вопрос:

У меня есть Windows 7 с несколькими голосами Ivona (harposoftware.com) установлен. У меня есть приложение, которое запускает SpVoice из Sapi и заставляет его читать текст. Теперь у меня также есть фрагмент текста, который я хотел бы превратить в диалог между несколькими голосами.

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

Мне было интересно, есть ли лучшее решение.

Итак, можно ли встроить некоторые теги SSML в мой текст, чтобы включить переключение между голосами на лету?

Ответ №1:

Вы должны иметь возможность использовать этот <voice> элемент для изменения голосов в SAPI 5.3.

Убедитесь, что для вызова функции Speak() установлен SPF_PARSE_SSML флаг.

Обратите внимание, что атрибут name в <voice> теге зависит от процессора и не может содержать встроенных пробелов. (например, <voice required="Name=Microsoft Mark"> определенно не будет делать то, что вы ожидаете.)

Это описано в спецификации W3C, но это легко пропустить.

В этом документе есть гораздо лучшее описание того, как работает голосовая метка, от Claro Software.