Имя: Пароль:
1C
1С v8
Проигрыш голосового движка в фоне
, ,
0 FiftyStars
 
01.07.13
06:42
Доброго времени суток.
Конфигурация Розница Ред.2
Решил вот влепить озвучивание некоторых действий пользователя в конфигурацию, поставил голосовой движок...вроде все работает, но хотелось бы, чтобы воспроизведение было в фоне, и пользователю было бы необязательно ожидать окончания воспроизведения для того, чтобы продолжить работу. Желательно, чтобы это работало на тонком, толстом клиентах в управляемого приложения и в обычном приложении, веб-клиент не интересует. Есть идеи, товарищи?
1 Рэйв
 
01.07.13
06:43
таймер нужен на это дело.
Нет в 1С раздельных потоков без ВК.
2 Cube
 
01.07.13
06:44
(0) "пользователя в конфигурацию, поставил голосовой движок"
Что за зверь?
3 Cube
 
01.07.13
06:45
(0) Как вариант, можно через внешнюю программулину какую-нибудь воспроизводить звук...
4 FiftyStars
 
01.07.13
06:52
(1) Таймер? Внешние компоненты выполняются в фоне? О_о
(2) Типа как Microsoft Sam, только русский
(3) Здесь так не
5 Рэйв
 
01.07.13
06:54
(4)На внешних компанентах как их напишешь так и будут выполняться:-)
6 FiftyStars
 
01.07.13
06:55
(3) Здесь так не прокатит - здесь не просто проигрыш звукового файла. Я думаю нужно запускать какой то внешний скрипт с параметрами(текст воспроизведения, голос воспроизведения и т.д.), который работал бы отдельно от 1с
7 Cube
 
01.07.13
06:56
(4) "Типа как Microsoft Sam, только русский"
Интересует, что ты имеешь ввиду, говоря "в конфигурацию поставил голосовой движок"?
Может ты его в винде установил просто?
8 Cyberhawk
 
01.07.13
06:56
А озвучка щас как прикручена? Другими словами, как 1С отдает команду вопроизвести звук?
9 Cube
 
01.07.13
06:56
(6) Так ты объясни, как сейчас работает-то...
10 FiftyStars
 
01.07.13
07:03
(9)(8)
Голосовой модуль  хранится в ХЗ, при необходимости устанавливается в WIN, прописываются ключи реестра, а для воспроизведения используется функция:

Процедура Проговорить(Текст)
   VoiceMod = "SAPI.SpVoice";
   VoiceMod.Voice = VoiceMod.GetVoices().Item(3);
   VoiceMod.Rate = СкоростьОзвучки;
   VoiceMod.Speak(Текст);
КонецПроцедуры
11 Cube
 
01.07.13
07:05
(10) Ну вот и ответ. Переписывай этот код в батник и выполняй его (батник) из 1С...
12 FiftyStars
 
01.07.13
07:14
хех писал по памяти забыл ком объект создать xD
VoiceMod = Новый COMОбъект("SAPI.SpVoice")
13 SanGvin
 
01.07.13
07:19
или шелл скриптом можно попробовать
14 FiftyStars
 
01.07.13
09:18
Решил задачку.
Написал ВК на Delphi, но там тоже работать асинхронно ничего не хотело.
В VoiceMod.Speak второй параметр можно поставить "1" - асинхронное чтение.
После этого ничего не читается вобще, но, это потому, что при асинхронном чтении VoiceMod умирает сразу же на выходе из процедуры, в которой, собственно и производится чтение. В итоге решил все без внешней компоненты объявлением переменной VoiceMod в модуле формы. В этом случае переменная живет пока живет форма и, соответственно, звук живет вместе с ней.
15 Cube
 
01.07.13
09:25
(14) Ну и как она читает? Хорошо? Есть недочеты?
16 FiftyStars
 
01.07.13
09:53
(15) Смотря какой движок поставишь =)Алёнка нормально говорит =)