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

Я разработал приложение TTS (преобразование текста в речь) на C # с использованием SAPI 5.x. Я хочу лицензировать или разработать свой собственный речевой профиль (или голосовой файл), который будет доступен исключительно моему приложению.

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

Является ли это возможным? В настоящее время я использую SpeechSynthesizer.SelectVoice («Microsoft Anna»); но мне нужно каким-то образом использовать SelectVoice для использования моего собственного «частного» голосового файла, который устанавливается вместе с моим приложением.

Спасибо за любой совет или помощь по этой теме.


person Alexander Perls    schedule 23.05.2012    source источник


Ответы (2)


Вы можете, но это потребует некоторого (нетривиального) кодирования. SAPI находит свои объекты с помощью маркеров объектов, которые являются COM-объектами, которые SAPI использует для управления взаимодействием между механизмами и приложениями.

Реализация Microsoft ISpObjectToken по умолчанию использует реестр, но вы не обязаны использовать эту реализацию.

Если у вас есть собственная реализация токена объекта (и довольно часто сторонние движки предоставляют свои собственные реализации токена объекта), вы можете создать отображение из токена объекта в код и данные для вашего частного голоса SR. Если вы не сделаете этот токен объекта общедоступным (т. Е. Вы не зарегистрируете свою реализацию в реестре как часть DllRegisterServer), тогда панель управления SAPI не сможет создать какие-либо экземпляры вашего токена объекта, поэтому он не будет нигде вне вашего приложения.

person Eric Brown    schedule 18.06.2012

Обычно SAPI хранит информацию о доступных голосах TTS или языках ASR в реестре Windows (HKEY_CURRENT_USER \ Software \ Microsoft \ Speech).

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

Нет никакого способа обойти это.

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

person Alexandru C.    schedule 31.05.2012