Страница 2 из 2
Re: Регулирование громкости
Добавлено: Ср авг 13, 2014 12:41 pm
Bagir
Все получилось! Только моя прога не читает mp3, а только wav. И восприняла переданное как текст, озвучив путь и имя файла

Сегодня научу свою прогу работать с mp3 и будет все отлично.
Расскажите немного про $exclusive и $priority. Идея с приоритетом мне в голову не приходила, а ведь действительно бывает, что когда сообщения встают в очередь, важные нужно поднять вверх. Надо будет тоже добавить такой параметр.
Re: Регулирование громкости
Добавлено: Ср авг 13, 2014 5:18 pm
Bagir
А можно ли забрать текст для озвучки, чтобы отправить его с свою программу, например какую нибудь говорилку? В настройках есть Use Google Text-to-Speech engine. Но если выключить, то вообще тишина. Может быть сделать выбор между движком гугла, собственным (установленным на компе), или же вызов сторонней программы с передачей ей текста на озвучку?
А пока подскажите, где в коде перехватить текст?
Re: Регулирование громкости
Добавлено: Ср авг 13, 2014 5:23 pm
Vit
Bagir писал(а):А можно ли забрать текст для озвучки, чтобы отправить его с свою программу, например какую нибудь говорилку? В настройках есть Use Google Text-to-Speech engine. Но если выключить, то вообще тишина. Может быть сделать выбор между движком гугла, собственным (установленным на компе), или же вызов сторонней программы с передачей ей текста на озвучку?
А пока подскажите, где в коде перехватить текст?
Поставьте например голосовой движок алена для windows или фестиваль для линух. И будет вам альтернатива гуглу т возможномть работать без нета. по второму вопросу не подскажу. Может пробовать через запрос к sql базе. Пробовать надо.
Re: Регулирование громкости
Добавлено: Ср авг 13, 2014 5:41 pm
Bagir
Так у меня как раз Алена и своя прога-говорилка. Проге можно отправить либо звуковой файл, либо текст на озвучку. Такой вариант выбрал чтобы звуки и речь из разных программ не звучали одновременно.
Re: Регулирование громкости
Добавлено: Пт авг 15, 2014 3:01 am
Bagir
Разобрался, 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, можно быть уверенным, что все уйдет ко мне?
Re: Регулирование громкости
Добавлено: Пн авг 18, 2014 1:06 am
Bagir
Цитирую сам себя. Жесть... Видать сказывается пиво и позднее время ))
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']." процентов");
Может быть кому пригодится.