gifts2017

Птыца Говорун отличается умом…

Опубликовал Дмитрий (Delon) в раздел Программирование - Практика программирования

Использование  компонент речевых технологий MS Speech (SAPI 4 и SAPI 5) в 1С.
Вначале было слово. Затем слово научились записывать и воспроизводить, копировать и оцифровывать, и ,наконец, синтезировать. Технология воспроизведения речи «text-to-speech» («текст в речь», чтение синтезированным голосом) реализована на различных платформах. [i] Никто не собирается Кубу открывать и все же : [/i] Голосовых движков (синтезаторов речи) и программ для воспроизведения текста разработано множество: Подробнее см., например, здесь: http://www.sovserver.ru/dc/program/16174/2007/01/30/golosovie_dviszki/ Существует речевой движок и от Microsoft, который многие программисты использует в своих разработках. Голос у него может показаться глухим и невнятным, но все же почему бы Вам не применять его в разработках ?!... Direct Speech Synthesis - это один из компонентов, входящих в состав MS SAPI 4 [5]. Этот компонент предназначен для непосредственного синтеза речи по тексту и позволяет не только озвучивать текст, но и управлять параметрами синтеза речи. Данный продукт можно использовать в любом языке, который поддерживает OLE автоматизацию (в 1С). Если Вы используете MS Windows 2000,Vista, то компоненты SAPI входят в состав ОС и, скорее всего, уже установлены на ПК, поэтому делать ничего не надо. Для ОС MS Windows 9x и XP Вам придется загрузить пользовательский дистрибутив SAPI 4 [5]: Файлы поддержки русского языка (мужской и женский голоса), (2,9 Мб)., http://activex.microsoft.com/activex/controls/agent2/lhttsrur.exe Файлы поддержки английского языка (мужской и женский голоса), (2,6 Мб), http://activex.microsoft.com/activex/controls/agent2/lhttseng.exe Также для ОС Windows 9X необходима служба использования голосов, (850 Кб), http://activex.microsoft.com/activex/controls/sapi/spchapi.exe Документация по SDK содержится в файле sapi.chm, который можно найти в директории \Program Files\Microsoft Speech SDK \Docs\Help SAPI 4 [5] SDK (68 Мб). или здесь http://www.microsoft.com/speech/SDK/51/sapi.chm [i] Поищите эти файлы на дисках, чтобы напрасно не качать из Интернета. Часто голосовые движки помещают на диски для программистов. Компоненты SDK также Вам могут пригодятся для прослушивания текста книг, документов и пр. [/i] Для тестов можно использовать простенькие программы преобразования текста в аудио: Govorilka CP (47 Кб). RUSSpeaker2.1 (208Кб) http://www.vector-ski.ru/vecs/govorilka/govorilka_cp.htm http://russpeaker.narod.ru/setup.zip В модулях 1С используем процедуры синтеза речи:

 

Перем Голос,Звук,УстSAPI;

Процедура ИнитSAPI()
Попытка    
Голос=СоздатьОбъект(\"ActiveVoice.ActiveVoice.1\"); //при необходимости
УстSAPI=Голос.CountEngines; //кол-во установленных голосовых движков
//Для Сч=1 По УстSAPI Цикл
//Сообщить(\"Имя синтезатора:\"+Голос.ProductName(Сч)+\" \"+Голос.Speaker(Сч));
//КонецЦикла;
Звук=СоздатьОбъект(\"Sapi.SpVoice\");
Исключение
УстSAPI=0;
Предупреждение(\"Не установлены компоненты SpeechAPI!\",3);    
КонецПопытки;    
КонецПроцедуры

Процедура Сказать(Фраза,Зн=0) // Так рождается звук.
Если УстSAPI>0 Тогда
 Звук.Speak(Фраза,Зн);
КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
ИнитSAPI();
Сообщить(\"Текущий голос:\"+Голос.Speaker(Голос.CurrentMode));
Текст=\"Hello, world !\";
// Пример 1. Воспроизведение текста голосом
Сказать(Текст);
//Голос.Speak(Текст);//можно и так!
// Пример 2. Воспроизведение текста голосом с использованием XML тэгов
Сказать(  
//\"<spell>\"+
\"<rate speed=\"+Симв(34)+\"-15\" +Симв(34)+\">\"+//Скорость  чтения
\"<volume level=\"+Симв(34)+\"95\"+Симв(34)+\">\"+//Громкость чтения
\"</voice>\"+
Текст,8);           
// Пример 3. Воспроизведение музыки или аудиозаписи из WAV файла
Сказать(\"D:\Music\Hello.WAV\",12);
// Пример 4. Недокументированная возможность
// Проигрывает WAV файл из Интернета (если установлено соединение)
Сказать(\"http://www.news.ru/news.wav\",12);  
// Пример 5. Читает содержимое текстового документа, используя программу Govorilka_CP
// ключ Е указывает номер используемого голосового движка<=УстSAPI-1
ЗапуститьПриложение(\"D:\Programs\Govorilka\Govorilka_cp.exe\"+
\" -I -H5 –E1 -F D:\ReadMe.txt \");
//ЗапуститьПриложение(\"D:\Programs\Govorilka\Govorilka_cp.exe\"+
//\" -I –E0 \"+\" Сегодня \"+Формат(ТекущаяДата(),\"DDMMMMYYYY\")+\"года\");
КонецПроцедуры

 

Метод Speak объекта SPVoice предоставляет довольно большие возможности путём внедрения в текст специальных тэгов XML (см. раздел под название “XML TTS Tutorial”): Воспроизведение текста находящегося в файле. Асинхронный режим проигрывания звука, который позволяет функции вернуть управление немедленно, во время воспроизведения. Тэги позволяют также настроить тональность звучания, скорость воспроизведения и многое другое. После установки компонентов SAPI 4 [5] Вы можете столкнуться с ситуацией, когда приведенный выше программный код не будет работать. Если при запуске появляется сообщение об ошибке, то это означает, что в системном реестре в соответствующем разделе не сопоставлены строковое имя компонента, называемое ProgId (в нашем случае это "ActiveVoice.ActiveVoice.1") и уникальный идентификатор компонента CLSID, по которому операционная система находит нужную информацию для загрузки компонента. В таком случае необходимо дополнить реестр информацией вручную. Для Windows XP нужно создать текстовый файл "activevoice.reg" следующего содержания: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\ActiveVoice.ActiveVoice.1] @="Direct Speech Synthesis" [HKEY_CLASSES_ROOT\ActiveVoice.ActiveVoice.1\Clsid] @="{EEE78591-FE22-11D0-8BEF-0060081841DE}" Затем в Проводнике Windows (WC, FAR) запустить этот файл на выполнение (нажать клавишу Enter) и согласиться с внесением изменений в реестр. На этом подготовка SAPI к работе завершена.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Доржи Цыденов (support) 04.05.07 17:57
2. Drock (d.snissarenko) 05.05.07 09:39
В принципе повторяет главу из Системного програмирования Михайлова, но все же +1
3. Andr (andrey995) 06.05.07 15:24
Мда... представил как в типовых 1С-ках комп будет говорить "теперь вставьте, пожалуйста, дискету для выгрузки отчетности для ИФНС"...
4. Аркадий Кучер (Abadonna) 02.06.07 07:45
Могу точно указать основной трабл при использовании вышеописанного: НЕТ звуковых колонок на пользовательских компах! ;)
На очень не бедном заводе, где я до недавнего времени работал, меня бы прибили, если бы я сказал, что надо купить 150 (!) комплектов колонок, для всех зарегистрированных пользователей 1С.
5. Аркадий Кучер (Abadonna) 02.06.07 07:54
6. Дмитрий (Delon) 03.06.07 21:36
Уважаемый Abadonna несомненно прав!
Но...статья посвящается не тем юзерам, коим
невелено иметь колонки, коим заклеевают USB и
пломбируют все что можно.
А - жертвам рейтенгового рэкета!!!
7. Vitaly (Vitaly) 19.02.12 22:34
Попробовал на WIN XP HE OEM под 1С 7.7 Чет не работает... Не обнаружен SpeechAPI... В реестр добавил, русский и англ. пакеты установил. В чем может быть проблемма?
8. Юлия Пухова (luchyk007) 20.02.12 07:26
Интересно, не знал что так можно делать :)
9. Vitaly (Vitaly) 23.02.12 14:07
Спасибо автору! Все заработало! Несколько уточнений по практическому применению на WIN XP... Как выяснилось все ХР содержат уже установленный SAPI5, но для вызовов методов из примера автора все же обязательно установите SAPI4. SAPI5 и SAPI4 дружат и друг другу не мешают :) После установки и регистрации в реестре код из примера начинает работать, но на английском языке, т.к. срабатывает синтезатор речи для SAPI5 MS Sam по-умолчанию. Установка синтезаторов русской речи для SAPI4 вам не поможет! Остается добавить синтезатор русской речи для SAPI5, например ScanSoft Katerina full 22 kHz.msi. И... Все работает. Проверено и реализовано на практике.
Много информации по данной теме с примерами и готовыми скриптами:http://mifoteka.ru/reading_aloud/voice_synthesizeres/voice_synthesizeres.htm.
Автору однозначный ПЛЮС!
CaSH_2004; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа