Чтение текста русским голосом в 1С

01.06.16

Разработка - Инструментарий разработчика

В компании есть электронная очередь, работающая на 1С. На монитор в торговом зале выводится в хронологическом порядке список заказов со статусом исполнения. Но клиенты иногда не смотрят на монитор и пропускают свой заказ или идут в кассу, или на склад раньше времени. Чтобы помочь клиентам сориентироваться, было решено озвучивать статусы заказов средствами 1С на русском языке с минимальными вложениями.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Архив с обработкой и всеми необходимыми компонентами
.zip 27,46Mb ver:1
129 2 500 руб. Купить
Голосовой движок Милена для SAPI5 (женский голос с отличной интонацией на русском и английском)
.rar 118,16Mb
72 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Здесь я привожу пример обработки, в которой доступно показано, как можно сделать озвучку любого текста из 1С с минимальными знаниями в программировании и сильно урезанным бюджетом.

В Windows уже есть встроенный синтезатор речи SAPI 5, но он говорит только на английском, а русскую версию я сразу не нашел, поэтому устанавливаем от того же Microsoft другую версию синтезатора речи.

Microsoft Speech Platform - набор инструментов, позволяющих разработчикам строить решения с распознаванием голоса и перевода голоса в текст. Текущая версия 11.0 платформы предлагает голоса для 26 языков, включая русский.

Для работы синтезатора речи необходимо загрузить и установить следующие компоненты Microsoft Speech Platform:

  • Microsoft Speech Platform - Runtime – серверная часть платформы, предоставляющая API (набор функций) для программ (файл с именем "SpeechPlatformRuntime.msi" для 32-битных и 64-битных версий Windows).
  • Microsoft Speech Platform - Runtime Languages – набор языков для серверной части. Для каждого языка доступны для скачивания модули для распознавания речи (файлы, чьи имена начинаются с "MSSpeech_SR_") и компьютерные голоса (файлы, чьи имена начинаются с "MSSpeech_TTS_").


В списке голосов присутствует и русский голос Elena (файл с именем "MSSpeech_TTS_ru-RU_Elena.msi", размер 6 МБ).

Платформа поддерживает Windows XP, Windows Vista, Windows Server 2008 и Windows 7. На остальных не проверял.

Устанавливаем все эти компоненты из приложенного архива. Открываем 1С, запускаем обработку либо для управляемых, либо для обычных форм. Пишем текст, слушаем звук. Наличие звуковой карты и колонок или наушников обязательно.

UPD: 

Нашел для SAPI5 отличный движок, который умеет говорить на русском и английском, с интонацией и женским голосом, а зовут это чудо Милена. Файл движка очень большой, поэтому выложен отдельно. По качеству гораздо лучше, чем предлагаемый выше Elena.

Прямая ссылка на движок Милена: https://dl.dropboxusercontent.com/u/94504750/Russian_Milena.rar

Переработан интерфейс обработки для возможности выбора типа синтезатора и голоса.


Подключение компоненты синтезатора речи осуществляется через COM объект. 

КомпонентаСинтезатораРечи = Новый COMОбъект("SPEECH.SpVoice");

КомпонентаСинтезатораРечи.Speak("Привет, как дела?");


Дополнение от Kashemir:

Для асинхронного (фонового) выполнения второй параметр нужно установить в 1.

Пример: КомпонентаСинтезатораРечи.Speak("Привет, как дела?", 1 )

Информация о дополнительных параметрах для SAPI https://msdn.microsoft.com/en-us/library/ms720892%28v=vs.85%29.aspx

Вступайте в нашу телеграмм-группу Инфостарт

Озвучка Чтение текста

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    65606    347    169    

304

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    255599    1412    421    

1154

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    51604    105    29    

116

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    37406    98    43    

117

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    24794    93    42    

101

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    52088    181    63    

214

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 руб.

25.02.2026    3102    11    1    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jaroslav.h 183 01.06.16 15:21 Сейчас в теме
Цікаво, на майбутнє в закладки поклав, дякую. Хоча би не забути про закладку, якщо наступить такий момент :)
Luksez; Neuroproton; Kashemir; Stim213; cool.vlad4; bulpi; +6 7 Ответить
4. Makushimo 160 02.06.16 06:08 Сейчас в теме
(1) myr4ik07, renmen anpil, ou kominike nan yon lang enkonpreyansib yo ban nou
корум; TreeDogNight; ixijixi; sats2003; Drak0n; nickpugachev; 1vasia1; +7 8 Ответить
8. bulpi 218 03.06.16 14:24 Сейчас в теме
(4)
Ты хвастаешься тем, что не понимаешь чужой язык ?
TreeDogNight; dendzu; Neuroproton; jaroslav.h; IgorS; dj_serega; Рамзес; +7 4 Ответить
7. пользователь 03.06.16 13:26
Сообщение было скрыто модератором.
...
2. Xershi 1551 01.06.16 15:24 Сейчас в теме
Все довольно просто выходит. Буду иметь в виду, если придется решать вопрос по интеграции.
3. uk09 01.06.16 15:26 Сейчас в теме
"В Windows уже есть встроенный синтезатор речи SAPI 5, но он говорит только на английском, а русской версии я не нашел, поэтому устанавливаем от того же Microsoft другую версию синтезатора речи"

В 2010 году такое делали, пользуясь спичем от Офиса. Голос Звездочета выбрали тогда
5. lustin 02.06.16 08:48 Сейчас в теме
(0) автор - а что за хитрый подход к ссылкам ? почему не прямые ссылки на Microsoft ?
79044970523; 1vasia1; +2 Ответить
6. 79044970523 941 03.06.16 06:47 Сейчас в теме
10. GreenEye 08.06.16 11:03 Сейчас в теме
(5) lustin, Вроде на MS там ссылки
9. todelo@yandex.ru 06.06.16 10:36 Сейчас в теме
Забавная вещь, но больше напоминает показательные возможности 1С, чем практическое применение.
11. nikivr 08.06.16 12:08 Сейчас в теме
Добрый день!

Пожалуйста подскажите начинающему программисту, каким образом из 1С происходит обращение и вызов этого "волшебного" синтезатора речи ?

Спасибо.
12. 79044970523 941 08.06.16 14:47 Сейчас в теме
(11) nikivr, Подключение компоненты синтезатора речи осуществляется через COM объект.
КомпонентаСинтезатораРечи = Новый COMОбъект("SPEECH.SpVoice");
КомпонентаСинтезатораРечи.Speak("Привет, как дела?");
13. Kashemir 352 09.06.16 10:33 Сейчас в теме
Хорошая штука !
p.s. Пробовал обработкой с обычными формами под SAPI5. Сперва пришлось тип реквизита "Голос" ("любаяссылка") табличной части "СписокГолосов" на строку неопределенной длины поменять.

fyi Для асинхронного (фонового) выполнения второй параметр нужно установить в 1 ( https://msdn.microsoft.com/en-us/library/ms720892%28v=vs.85%29.aspx ) . Пример КомпонентаСинтезатораРечи.Speak("Привет, как дела?", 1 )
mai_k; 79044970523; +2 Ответить
14. 79044970523 941 10.06.16 07:06 Сейчас в теме
(13) Kashemir, Учел предложения и внес в публикацию. Спасибо.
Kashemir; +1 Ответить
21. top_1c 4034 15.01.19 10:30 Сейчас в теме
(14) асинхронный вызов не получается. Он точно работает из 1С? Windows 10.
15. V0fka 30 09.08.16 11:23 Сейчас в теме
Автор, вы бы не могли выложить несколько строк примера кода (или обработку куда-то в бесплатное место положить) как использовать движок Milena?
17. talych 17 02.05.17 14:33 Сейчас в теме
(15)
&НаКлиенте
Процедура Озвучить(Команда)
	объектСП = Новый COMОбъект("SAPI.SpVoice");
	объектСП.Rate = 1;
	объектСП.Volume = 90;
    	объектСП.Speak("Здравствуй мир!");
КонецПроцедуры
Показать
maksa2005; +1 Ответить
16. TreeDogNight 22 25.09.16 13:03 Сейчас в теме
В тонком и веб-клиенте платформы 8.3.8 будет работать?
18. pvlunegov 160 19.06.17 20:51 Сейчас в теме
Хорошая вещь, все установилось и стало работать с полтычка, спасибо автору!
Голос Милены гораздо приятнее чем Микрософтовской барышни.
19. biformatus 12.12.17 14:30 Сейчас в теме
Ссылка на движок Милена умерла
serjik777; +1 Ответить
20. Vodoley 2 25.04.18 22:09 Сейчас в теме
22. u_n_k_n_o_w_n 35 12.08.19 17:49 Сейчас в теме
Добрый день!

Оригинальное решение! Встроил в свою конфигурацию.

Теперь после выполнения фонового задания, тетка сообщает об этом.

Ранее приходилось постоянно переключаться и смотреть результаты, что постоянно отвлекало.

Однозначно +.
23. user1445247 03.08.20 16:01 Сейчас в теме
Если записанные сообщения, то нагенерить озвучку удобно тут https://zvukogram.com/speech/
24. SiaGlobe 07.03.21 17:28 Сейчас в теме
Лучше голос Milena

объектСП = Новый COMОбъект("SAPI.SpVoice");
объектСП.Voice = объектСП.GetVoices().Item(4);	
объектСП.Rate = 3;
объектСП.Volume = 100;
объектСП.Speak("Альпен Гольд Два шоколада 90г");	

//************
//Тут подбираете Номер Голоса.
объектСП.Voice = объектСП.GetVoices().Item(1);	
объектСП.Voice = объектСП.GetVoices().Item(2);	
объектСП.Voice = объектСП.GetVoices().Item(3);	
объектСП.Voice = объектСП.GetVoices().Item(4);	
объектСП.Voice = объектСП.GetVoices().Item(5);	

Показать
25. SiaGlobe 10.03.21 15:49 Сейчас в теме
Чтобы 1с не тормозила. Лучше запускать отдельно
//Voice.exe НомерГолоса УровеньЗвука Rate ТекстДляГолоса" ,
&НаКлиенте
Процедура Команда2(Команда)
Перем КодВозврата;
Сообщить("Запускаем ...");
ЗапуститьПриложение(
"c:\Voice.exe 3 25 0 345" ,
"", // текущий каталог для запускаемого приложения
Ложь, // дожидаться завершения работы запущенного приложения
КодВозврата // сюда попадёт код, возвращаемый программой
);
Сообщить("Уже тут");
КонецПроцедуры

//********************
Код программы Voice.exe на c#
static void Main()
{
string[] arguments = Environment.GetCommandLineArgs();
SpVoice speech = new SpVoice();
speech.Voice = speech.GetVoices().Item(int.Parse(arguments[1]));
speech.Volume = int.Parse(arguments[2]);
speech.Rate = int.Parse(arguments[3]);
String s = arguments[4];
speech.Speak(s);
}
Прикрепленные файлы:
Voice.exe
27. styleefiop 23.11.22 11:50 Сейчас в теме
(25) А где в программе на c# указание, какой COM-объект используется?
28. SiaGlobe 23.11.22 12:33 Сейчас в теме
(27) Такого у меня нет. Просто через Расширение добавил где надо.
Просто подключаете виртуальный Дисплей покупателя. И ручками прописываете место Где приходят Данные для озвучки.
Лучше к программистам 1с обратиться они знают куда добавить.
Voice.exe 2 55 3 Альпен Гольд Два шоколада 90г 345 222
пароль 1
Прикрепленные файлы:
1.zip
ScreenRecorderProject4.mp4
29. styleefiop 23.11.22 16:53 Сейчас в теме
(28) Так вы только из 1С voice.exe запускаете? И там в 1С прописано Новый COMОбъект("SAPI.SpVoice") ??
Отдельно, без 1С, можете запустить voice.exe, чтоб она проговорила текст?

Или вы вообще не знаете текст своей программы и ее не писали, но на с# текст размещаете?
30. SiaGlobe 24.11.22 09:20 Сейчас в теме
(29)

Процедура ГолосТекстНовый(НомерГолоса, ГромкостьГолоса, СкоростьГолоса, СуммПред, Сумм) Экспорт
	Перем КодВозврата;	
	Если ГромкостьГолоса<>0 Тогда
		Если СуммПред<>Сумм Тогда    
			//Сообщить("***"+Сумм+"***");   
			Сумм = СтрЗаменить(Сумм, Символ(34), "" );
			Попытка              
				ЗапуститьПриложение(
				"C:\BASE\Voice\Voice.exe " + НомерГолоса + " " + ГромкостьГолоса + " " + СкоростьГолоса + " " + Сумм,
				"", // текущий каталог для запускаемого приложения
				Ложь, // дожидаться завершения работы запущенного приложения
				КодВозврата // сюда попадёт код, возвращаемый программой
				);	
			Исключение       
				Сообщить("No VOICE");
			КонецПопытки;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры



//на кассе Число
ГолосТекстНовый(НомерГолоса, ГромкостьГолоса, СкоростьГолоса, -1, СуммаИтого); 


//на кассе Текст
ГолосТекстНовый(НомерГолоса, ГромкостьГолосаОшибки, 3, -1, "Есть, Маркированный товар");


ТекстОшибки = "Ошибка Маркировки";
ГолосТекстНовый(НомерГолоса, ГромкостьГолоса, 3, -1,  ТекстОшибки);		

Показать
31. styleefiop 25.11.22 13:17 Сейчас в теме
(30) А про Новый COMОбъект("SAPI.SpVoice") в другой процедуре этой 1С программы прописано?
Там как?
26. SiaGlobe 10.03.21 16:29 Сейчас в теме
Пример запуска
Voice.exe 3 25 0 "Альпен Гольд Два шоколада 90г 345"
32. SiaGlobe 26.11.22 01:30 Сейчас в теме
(31) Все прописано и запрограммировано в EXE файле Voice.exe

    using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Net.Security;
using System.Threading.Tasks;
using System.Windows.Forms;
using SpeechLib;

namespace Voice
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        //[STAThread]
        static void Main()
        {
            //Console.WriteLine();
            //  Invoke this sample with an arbitrary set of command line arguments.
            string[] arguments = Environment.GetCommandLineArgs();
            //String ss = "GetCommandLineArgs: {0} " + string.Join(", ", arguments2);
            //MessageBox.Show(ss);
            int myInt = arguments.Length-1;
            //string myString = myInt.ToString();

            // string[] arguments = Environment.GetCommandLineArgs();
            if (myInt > 0)
            {
                if (arguments[1] == "/?") {
                    //MessageBox.Show(myInt.ToString());
                    MessageBox.Show("Voice.exe 2 100 3 Альпен Гольд Два шоколада 90г 345"); 
                }


                try
                {
                    SpVoice speech = new SpVoice();
                    speech.Voice = speech.GetVoices().Item(int.Parse(arguments[1]));
                    speech.Volume = int.Parse(arguments[2]);
                    speech.Rate = int.Parse(arguments[3]);
                    //String s = arguments[4] + " " + arguments[5] +" "+ arguments[6] +" "+ arguments[7] +" "+ arguments[8] +" "+ arguments[9];
                    //String s = arguments[4] + " " + arguments[5] + " " + arguments[6] + " " + arguments[7] + " " + arguments[8] + "  " + arguments[9] + "  " + arguments[10];
                    String s = "";
                    for (int i = 4; i <= myInt; i++)
                    {
                        s = s + "  " + arguments[i];
                    }

                    //MessageBox.Show(s);
                    speech.Speak(s);
                }
                catch (Exception)
                {
                    //MessageBox.Show("000 Voice.exe 2 100 3 Альпен Гольд Два шоколада 90г 345");
                }
            }
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());
        }
    }
}

    
Показать
34. EmptyLogin 08.09.25 14:40 Сейчас в теме
(32) Будьте любезны, подскажите, как декомпилировать, изменить и обратно скомпилировать exe-шник? Т.е. я имею в виду фреймворки, в которых Вы создавали этот файл. Ну, или без декомпиляции... с помощью чего можно создать exe-шник с таким кодом?
35. SiaGlobe 21.02.26 04:15 Сейчас в теме
(34) Я использую Visual Studio
33. wolder 135 28.06.23 10:16 Сейчас в теме
Отличная вещь! Спасибо.
37. SiaGlobe 21.02.26 04:23 Сейчас в теме
Весь Новый проект.
Прикрепленные файлы:
Voice_Отчёт_21.02.2026_11_22_00.txt
Для отправки сообщения требуется регистрация/авторизация