Главная

Friday, 17 November 2017

Голосовой глюк в Windows 7.

Всем привет.

Перечитывая за своей Windows 7 электронную книгу мне захотелось выпить кофейку. Но ведь Windows точно умеет читать голосом. Почему бы этим не воспользоваться? И глаза отдохнут. Еще с версии Windows ХР экранный диктор (narrator.exe) голосом Анны мог читать все что было на экране по английски. А русский текст диктор просто пропускал.



Из сети для Windows 7 было найдено простое решение. Про простоту нас заверяет каждый второй автор, видимо особо не затруднившись проверить это у себя.

Итак, нам известно что преобразование текста в речь (Text-To-Speech или TTS) производится с помощью речевых модулей (TTS Engine), которые должны устанавливаться отдельно. После установки такого модуля в системе появляется один или несколько так называемых голосов (TTS Voices). Для преобразования текста в речь рекомендуют использовать бесплатную Microsoft Speech Platform SDK 11, которая поддерживает 26 языков, включая русский.

Для ее установки на 32-битную Windows 7 необходимо:
1. Скачать 32-разрядную (x86) версию платформы (файл x86_SpeechPlatformRuntime\ SpeechPlatformRuntime.msi) с сайта Майкрософт.

2. Кроме того, необходимо установить необходимые голоса, скачав их с сайта Майкрософт. Русский женский голос Elena файл MSSpeech_TTS_ru-RU_Elena.msi.


Выбор режима - откройте вкладку Преобразование текста в речь (TTS) – Общие. Если в системе установлены речевые модули (голоса), то они будут отображены в выпадающем списке Выбор голоса. Выберите необходимый голос.

Вроде все просто, инсталяция пакетов происходит на ура, но голос Елены в списке не появляется.( Ну нету его там. Известно что и MS Word имеет возможность читать текст в своих документах, но по умолчанию только на анлийском языке. Он также не видит нового TTS-модуля.

Но модуль существует! Вот так один славный парень предлагает решение доказать это. Оказалось что нам достаточно создать такой вот файлик VBScript:

Dim strText, objVoice, objHTML
 Set objVoice = CreateObject("SPEECH.SpVoice")
 If WScript.Arguments.Count = 1 Then Set objVoice.voice = objVoice.GetVoices.Item(CInt(WScript.Arguments(0)))
 Set objHTML = CreateObject("htmlfile")
 strText = objHTML.ParentWindow.ClipboardData.GetData("text")
 If strText <> "" Then objVoice.speak strText

Если его запустить на выполнение с параметром 0 (cscript file.vbs 0), то он прочитает русский текст предварительно помещенный в Clipboard. И это будет голос... чей? Правильно, Елены.)

Имеем такой вот голосовой "костыль".

No comments:

Post a Comment

А что вы думаете по этому поводу?