1С 8.3 Произнести текст голосом
Данные > Примеры кода 1С > 1С 8.3 Диалоги
Перейти в раздел примеры кода 1С 8.3:
Аудио звук в 1С 8.3:
&НаКлиенте
Процедура АудиоКоманда(Команда)
// Работает по умолчанию во всех современных ОС, которые поддерживают .NET Framework 4
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Speak("Я верю, друзья, караваны ракет.
|Помчат нас вперед, от звезды до звезды.
|На пыльных тропинках далеких планет.
|Останутся наши следы.");
КонецПроцедуры
Процедура АудиоКоманда(Команда)
// Работает по умолчанию во всех современных ОС, которые поддерживают .NET Framework 4
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Speak("Я верю, друзья, караваны ракет.
|Помчат нас вперед, от звезды до звезды.
|На пыльных тропинках далеких планет.
|Останутся наши следы.");
КонецПроцедуры
Чтение аудио файла (асинхронно) в 1С 8.3:
&НаКлиенте
Процедура ВоспроизвестиАсинхронноАудиоФайл(Команда, ПутьКФайлу)
//Flags: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms720892(v=vs.85)
АудиоГолос = Новый COMОбъект("SAPI.SpVoice");
ВоспроизвестиАсинхронно = Истина;
SVSFlagsAsync = 1;
SVSFIsFilename = 4;
Flags = ?(ВоспроизвестиАсинхронно, SVSFlagsAsync, 0) + SVSFIsFilename;
АудиоГолос.Speak(ПутьКФайлу, Flags);
КонецПроцедуры
Процедура ВоспроизвестиАсинхронноАудиоФайл(Команда, ПутьКФайлу)
//Flags: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms720892(v=vs.85)
АудиоГолос = Новый COMОбъект("SAPI.SpVoice");
ВоспроизвестиАсинхронно = Истина;
SVSFlagsAsync = 1;
SVSFIsFilename = 4;
Flags = ?(ВоспроизвестиАсинхронно, SVSFlagsAsync, 0) + SVSFIsFilename;
АудиоГолос.Speak(ПутьКФайлу, Flags);
КонецПроцедуры
Пример реализации объявлений электронной очереди с помощью COMObject("SAPI.SpVoice") в 1С 8.3:
&НаСервере
Процедура ЗаполнитьТабло()
//Заполним вызванных
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектроннаяОчередь.Услуга КАК Услуга,
| Электроннаябчередь.Талон КАК Талон,
| Электроннаябчередь.Окно КАК Окно,
| ЭлектроннаяОчередь.Вызов КАК Вызов
| ИЗ
| РегистрСведений.ЭлектроннаяОчередь КАК ЭлектроннаяОчередь
| ГДЕ
| ЭлектроннаяОчередь.Услуга В (&СписокУслуг)
| И ЭлектроннаяОчередь Организация = &Организация
| И ЭлектроннаяОчередь Окно В (&СписокОкон)
| И ЭлектроннаяОчередь.Терминал В (&СписокТерминалов)
| Вызов УБЫВ";
Запрос.УстановитьПараметр ("Организация", Объект.Табло.Организация);
Запрос.УстановитьПараметр ("СписокУслуг", СписокУслуг);
Запрос.УстановитьПараметр ("СписокОкон", СписокОкон);
Запрос.УстановитьПараметр ("СписокТерминалов" , СписокТерминалов);
ТаблицаОбрабатываемых=Запрос.Выполнить().Выгрузить();
ТекущиеВызовы.Очистить();
Для Каждого Стр Из ТаблицаОбрабатываемых Цикл
Если ТекущийВызов<>""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно Тогда
ТекущийВызов=""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Rate = 3;
АудиоГолос.Volume = 100;
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
КонецЕсли;
НоваяСтрока=текущиеВызовы.Добавить();
НоваяСтрока.Услуга=Стр.Услуга;
НоваяСтрока.Талон=Стр.Талон;
НоваяСтрока.ПредставлениеТалона=""+Стр.Услуга.Префикс+Стр. талон;
НоваяСтрока.окно=Стр.Окно;
//НоваяСтрока.разделитель="=>";
КонецЦикла;
Процедура ЗаполнитьТабло()
//Заполним вызванных
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектроннаяОчередь.Услуга КАК Услуга,
| Электроннаябчередь.Талон КАК Талон,
| Электроннаябчередь.Окно КАК Окно,
| ЭлектроннаяОчередь.Вызов КАК Вызов
| ИЗ
| РегистрСведений.ЭлектроннаяОчередь КАК ЭлектроннаяОчередь
| ГДЕ
| ЭлектроннаяОчередь.Услуга В (&СписокУслуг)
| И ЭлектроннаяОчередь Организация = &Организация
| И ЭлектроннаяОчередь Окно В (&СписокОкон)
| И ЭлектроннаяОчередь.Терминал В (&СписокТерминалов)
|
| УПОРЯДОЧИТЬ ПО | Вызов УБЫВ";
Запрос.УстановитьПараметр ("Организация", Объект.Табло.Организация);
Запрос.УстановитьПараметр ("СписокУслуг", СписокУслуг);
Запрос.УстановитьПараметр ("СписокОкон", СписокОкон);
Запрос.УстановитьПараметр ("СписокТерминалов" , СписокТерминалов);
ТаблицаОбрабатываемых=Запрос.Выполнить().Выгрузить();
ТекущиеВызовы.Очистить();
Для Каждого Стр Из ТаблицаОбрабатываемых Цикл
Если ТекущийВызов<>""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно Тогда
ТекущийВызов=""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Rate = 3;
АудиоГолос.Volume = 100;
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
КонецЕсли;
НоваяСтрока=текущиеВызовы.Добавить();
НоваяСтрока.Услуга=Стр.Услуга;
НоваяСтрока.Талон=Стр.Талон;
НоваяСтрока.ПредставлениеТалона=""+Стр.Услуга.Префикс+Стр. талон;
НоваяСтрока.окно=Стр.Окно;
//НоваяСтрока.разделитель="=>";
КонецЦикла;
//...
КонецПроцедурыВвести текст голосом с использованием intent (на мобильном) в 1С 8.3:
Процедура ВводАндроидом()
Результат = Новый Структура("Строка, Точность", Новый Массив, 0);
#Если МобильныйКлиент или МобильноеПриложениеКлиент Тогда
Результат = Новый Структура("Строка, Точность", Новый Массив, 0);
#Если МобильныйКлиент или МобильноеПриложениеКлиент Тогда
НовЗп = Новый ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH");
РезультатЗапуска = НовЗп.Запустить(Истина);
Если РезультатЗапуска = 0 Тогда
Сообщить("Не удалось запустить распознавание");
Иначе
СтрВвода = НовЗп.ДополнительныеДанные.Получить("query").Значение;
СтрВвода = СтрЗаменить(ВРег(СтрВвода), "- ", "-");
Результат.Строки = СтрРазделить(СтрВвода," ", Ложь);
Результат.Точность = НовЗп.ДополнительныеДанные.Получить("android.speech.extra.CONFIDENCE_SCORES").Значение[0];
КонецЕсли;
#КонецЕсли
// ОкончаниеВводаАндроидом(Результат);
КонецПроцедуры
1
комментарий
Ля
27 фев 2021
Ахха незнал что 1с умеет говорить. Ещё ж такую песню подобрал
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник