[Сценарий] Регулирование громкости

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Регулирование громкости

Сообщение Bagir » Ср авг 13, 2014 12:41 pm

Все получилось! Только моя прога не читает mp3, а только wav. И восприняла переданное как текст, озвучив путь и имя файла :) Сегодня научу свою прогу работать с mp3 и будет все отлично.
Расскажите немного про $exclusive и $priority. Идея с приоритетом мне в голову не приходила, а ведь действительно бывает, что когда сообщения встают в очередь, важные нужно поднять вверх. Надо будет тоже добавить такой параметр.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Регулирование громкости

Сообщение Bagir » Ср авг 13, 2014 5:18 pm

А можно ли забрать текст для озвучки, чтобы отправить его с свою программу, например какую нибудь говорилку? В настройках есть Use Google Text-to-Speech engine. Но если выключить, то вообще тишина. Может быть сделать выбор между движком гугла, собственным (установленным на компе), или же вызов сторонней программы с передачей ей текста на озвучку?
А пока подскажите, где в коде перехватить текст?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Регулирование громкости

Сообщение Vit » Ср авг 13, 2014 5:23 pm

Bagir писал(а):А можно ли забрать текст для озвучки, чтобы отправить его с свою программу, например какую нибудь говорилку? В настройках есть Use Google Text-to-Speech engine. Но если выключить, то вообще тишина. Может быть сделать выбор между движком гугла, собственным (установленным на компе), или же вызов сторонней программы с передачей ей текста на озвучку?
А пока подскажите, где в коде перехватить текст?

Поставьте например голосовой движок алена для windows или фестиваль для линух. И будет вам альтернатива гуглу т возможномть работать без нета. по второму вопросу не подскажу. Может пробовать через запрос к sql базе. Пробовать надо.
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Регулирование громкости

Сообщение Bagir » Ср авг 13, 2014 5:41 pm

Так у меня как раз Алена и своя прога-говорилка. Проге можно отправить либо звуковой файл, либо текст на озвучку. Такой вариант выбрал чтобы звуки и речь из разных программ не звучали одновременно.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Регулирование громкости

Сообщение Bagir » Пт авг 15, 2014 3:01 am

Разобрался, cscript D:\Server\www\majordomo\rc\sapi.js Здравствуй мир теперь говорит. Да и сейчас вообще полный порядок. Если в настройках включить Use Google Text-to-Speech engine, то читает файлы от Гугла playSound($google_file, 1, $level); Если выключить, работает sapi.js.
Все бы хорошо, но пользоваться всем этим без выбора звуковой карты я не могу. Поэтому на пока в common.class.php в функции playSound увел озвучку файлов в свою программу, и туда же перехватил текст в safe_exec('cscript '.DOC_ROOT.'/rc/sapi.js '.$ph, 1, $level);
К стати, две звуковухи это как бы и не редкость. У кого то как у меня две карты на мультимедиа и оповещатели. У других просто телик по HDMI подключен. Неплохо бы этот момент красиво обставить.
И еще одно: звук дин-дон перед сообщением. Если выбран синтез гугла, то норм, а вот при использовании сапи, не редко бывает что сначала читает текст, а потом звучит динь-дон. Как бы есть необходимость в создании всеядного плеера, которому можно и файл кинуть, и текст на озвучку отправить. Причем файл как со звуком так и от гугла. И все это добро должно быть выстроено списком строго по порядку. Ну и конечно же мне бы очень хотелось видеть в нем выбор звуковухи. Если будет интересно, выложу свою программу. Правда там еще полно недоработок, да и вопрос с выбором звуковой карты решен кривым способом, но работает. Вот только она на VB6. Так что мало чем полезна для кода php. Ну хотя бы как идею.
Скажите, а звук и текст отправляются только из common.class.php? Это я к тому, что после того, как я перенаправил звук в функции playSound и перехватил текст перед вызовом sapi.js, можно быть уверенным, что все уйдет ко мне?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Регулирование громкости

Сообщение Bagir » Пн авг 18, 2014 1:06 am

Цитирую сам себя. Жесть... Видать сказывается пиво и позднее время ))
Bagir писал(а):звук дин-дон перед сообщением. Если выбран синтез гугла, то норм, а вот при использовании сапи, не редко бывает что сначала читает текст, а потом звучит динь-дон.
Если такое случается, то можно добавить после звука небольшую задержку: файл .\lib\common.class.php

Код: Выделить всё

           if (!defined('SETTINGS_SPEAK_SIGNAL') || SETTINGS_SPEAK_SIGNAL=='1') {
              $passed=SQLSelectOne("SELECT (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(ADDED)) as PASSED FROM shouts WHERE ID!='".$rec['ID']."' ORDER BY ID DESC LIMIT 1");
              if ($passed['PASSED']>20) { // play intro-sound only if more than 30 seconds passed from the last one
                    playSound('dingdong', 1, $level);
                    // ожидание в течении 1 секунды. Иначе реплика и звук могут путаться местами
                    sleep(1);
                  }
           } 
По регулировке громкости:
Class: Computer Метод VolumeLevelChanged
Тут можно изменить утилиту, которая будет крутить "ручку громкости". Что то nircmdc у меня не зашуршала. Может потому что для оповещателей MDM я использую вторую звуковую карту которая выбрана не основной. Я не разбирался, а просто отдал эту задачу на выполнение своей утилитке. И еще добавил паузу. А то иногда получалось, что сначала говорит, а потом только громкость звука изменяет.

Код: Выделить всё

$volume=round(65535*$params['VALUE']/100);
$this->setProperty('volumeLevel',$params['VALUE']);
safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume);
// ожидание в течении 1 секунды
sleep(1);
say("Громкость ".$params['VALUE']." процентов");
 
Может быть кому пригодится.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить