1С 8.3 Произнести текст голосом - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Произнести текст голосом

Данные > Примеры кода 1С > 1С 8.3 Диалоги
Перейти в раздел примеры кода 1С 8.3:
Аудио звук в 1С 8.3:
&НаКлиенте
Процедура АудиоКоманда(Команда)

   
// Работает по умолчанию во всех современных ОС, которые поддерживают .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);

КонецПроцедуры
Пример реализации объявлений электронной очереди с помощью COMObject("SAPI.SpVoice") в 1С 8.3:
&НаСервере
Процедура ЗаполнитьТабло()

   //Заполним вызванных
   Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
                        |   ЭлектроннаяОчередь.Услуга КАК Услуга,
                        |   Электроннаябчередь.Талон КАК Талон,
                        |   Электроннаябчередь.Окно КАК Окно,
                        |   ЭлектроннаяОчередь.Вызов КАК Вызов
                        | ИЗ
                        |   РегистрСведений.ЭлектроннаяОчередь КАК ЭлектроннаяОчередь
                        | ГДЕ
                        |    ЭлектроннаяОчередь.Услуга В (&СписокУслуг)
                        |   И ЭлектроннаяОчередь Организация = &Организация
                        |   И ЭлектроннаяОчередь Окно В (&СписокОкон)
                        |    И ЭлектроннаяОчередь.Терминал В (&СписокТерминалов)
                        |
                        | УПОРЯДОЧИТЬ ПО
                        |   Вызов УБЫВ";

   Запрос.УстановитьПараметр ("Организация", Объект.Табло.Организация);
   Запрос.УстановитьПараметр ("СписокУслуг", СписокУслуг);
   Запрос.УстановитьПараметр ("СписокОкон", СписокОкон);
   Запрос.УстановитьПараметр ("СписокТерминалов" , СписокТерминалов);
   ТаблицаОбрабатываемых=Запрос.Выполнить().Выгрузить();

   ТекущиеВызовы.Очистить();
   Для Каждого Стр Из ТаблицаОбрабатываемых Цикл

       Если ТекущийВызов<>""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно Тогда
           ТекущийВызов=""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно;
           ДатьСигнал=Истина;
           ДатьСигнал=Истина;
           ДатьСигнал=Истина;
          АудиоГолос = Новый COMObject("SAPI.SpVoice");
          АудиоГолос.Rate = 3;
          АудиоГолос.Volume = 100;
          АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
          АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
       КонецЕсли;

       НоваяСтрока=текущиеВызовы.Добавить();
       НоваяСтрока.Услуга=Стр.Услуга;
       НоваяСтрока.Талон=Стр.Талон;
       НоваяСтрока.ПредставлениеТалона=""+Стр.Услуга.Префикс+Стр. талон;
       НоваяСтрока.окно=Стр.Окно;
       //НоваяСтрока.разделитель="=>";

   КонецЦикла;
  //...
КонецПроцедуры
Ввести текст голосом с использованием intent (на мобильном) в 1С 8.3:
Процедура ВводАндроидом()

   Результат = Новый Структура("Строка, Точность", Новый Массив, 0);

    #Если МобильныйКлиент или МобильноеПриложениеКлиент Тогда

      НовЗп = Новый ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH");
       РезультатЗапуска = НовЗп.Запустить(Истина);

       Если РезультатЗапуска = 0 Тогда
           Сообщить("Не удалось запустить распознавание");
       Иначе
           СтрВвода  = НовЗп.ДополнительныеДанные.Получить("query").Значение;
           СтрВвода = СтрЗаменить(ВРег(СтрВвода), "- ", "-");
           Результат.Строки  = СтрРазделить(СтрВвода," ", Ложь);
           Результат.Точность  = НовЗп.ДополнительныеДанные.Получить("android.speech.extra.CONFIDENCE_SCORES").Значение[0];
       КонецЕсли;

    #КонецЕсли

   // ОкончаниеВводаАндроидом(Результат);

КонецПроцедуры

1
комментарий
Ля
27 фев 2021
Ахха незнал что 1с умеет говорить. Ещё ж такую песню подобрал
____________________
Copyright©, «Программист 1С в г.Минске», 26.02.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому