Инструменты пользователя

Инструменты сайта


voice2

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
voice2 [2018/08/21 10:24]
kirill создано
voice2 [2018/08/21 16:24] (текущий)
Строка 6: Строка 6:
 #Пример вызова из dialplan #Пример вызова из dialplan
 #;Voice Module #;Voice Module
-#exten => _504,1,Answer +#exten => 999,1,Answer                                                                                                                                                                                                                                         
-#exten => _504,n,Record(/tmp/${UNIQUEID}.wav,3,20); +#exten => 999,n,Record(/tmp/${UNIQUEID}.wav,3,20);                                                                                                                                                                                                             
-#exten => _504,n,AGI(yandex-voice2.php,/tmp/${UNIQUEID}); +#exten => 999,n,AGI(yandex.php,/tmp/${UNIQUEID});                                                                                                                                                                                                              
-#exten => _504,n,NoOp(${TEXT}); +#exten => 999,n,NoOp(${TEXT});                                                                                                                                                                                                                                 
-#exten => _504,n,Hangup +#exten => 999,n,Dial(sip/${DB(firma/${TEXT})}).                                                                                                                                                                                                                
 +#exten => 999,n,Hangup         
  
  
Строка 17: Строка 17:
 $agivars = array(); $agivars = array();
 while (!feof(STDIN)) { while (!feof(STDIN)) {
-    $agivar = trim(fgets(STDIN)); +$agivar = trim(fgets(STDIN)); 
-        if ($agivar === ''+if ($agivar === ''
-                break; +break; 
- +$agivar = explode(':', $agivar); 
-                    $agivar = explode(':', $agivar); +$agivars[$agivar[0]] = trim($agivar[1]); 
-                        $agivars[$agivar[0]] = trim($agivar[1]); +      
-                        +      extract($agivars);
-                        extract($agivars)+
- +
-                        $filename = $_SERVER["argv"][1]; +
- +
-                        #ключ от yandex speech kit  можно получить на: +
-                        #https://developer.tech.yandex.ru/ +
-                        #требуется учётка яндекса +
-                        $key = '6be78e3c-6184-4f83-b18d-cf33c6727735';+
  
 +$filename = $_SERVER["argv"][1];
 +#ключ от yandex speech kit  можно получить на:
 +#https://developer.tech.yandex.ru/
 +#требуется учётка яндекса
 +$key = '6be78e3c-6184-4f83-b18d-cf33c6727735';
  
-                        #$topic = 'maps' — тема для распознавания, возможны следующие варианты: 
-                        #• freeform — произвольный текст, заметки и т.д. Вариант применения: переводим в текст сообщение голосовой почты и отправляем его на email или виде SMS. 
-                        #• general — web поисковые запросы, не могу придумать к чему это можно применить в данном контексте; 
-                        #• maps — адреса, GEO-точки (название баров, автозаправочные станции, гостиницы и так далее), и т.д.; 
-                        #• music — названия песен, музыкальных групп и т.д. 
-                        $topic = "freeform"; 
  
-                        #$lang = 'ru-RU' — язык на котором будет происходить распознавание, на данный момент поддерживается русский 'ru-RU' и турецкий 'tr-TR', причем турецкий поддерживается только для тем «general» и «maps»; +#$topic = 'maps' — тема для распознавания, возможны следующие варианты: 
-                        $lang = "ru-RU";+#• freeform — произвольный текст, заметки и т.д. Вариант применения: переводим в текст сообщение голосовой почты и отправляем его на email или виде SMS. 
 + #• general — web поисковые запросы, не могу придумать к чему это можно применить в данном контексте; 
 +#• maps — адреса, GEO-точки (название баров, автозаправочные станции, гостиницы и так далее), и т.д.; 
 +#• music — названия песен, музыкальных групп и т.д. 
 +$topic = "freeform"; 
 +#$lang = 'ru-RU' — язык на котором будет происходить распознавание, на данный момент поддерживается русский 'ru-RU' и турецкий 'tr-TR', причем турецкий поддерживается только для тем «general» и «maps»; 
 +$lang = "ru-RU";
  
-                        #генерация рандомного ID +#генерация рандомного ID 
-                        $randtoken=rand(1000); +$randtoken=rand(1000); 
-                        $uuid=md5($randtoken);+$uuid=md5($randtoken);
  
-                        #перекодируем файл в формат яндекса +#перекодируем файл в формат яндекса 
-                        system('sox '.$filename.'.wav -r 16000 -b 16 -c 1 '.$filename.'-pcm.wav');+system('sox '.$filename.'.wav -r 16000 -b 16 -c 1 '.$filename.'-pcm.wav');
  
-                        #отсылаем файл и получаем в ответ xml +#отсылаем файл и получаем в ответ xml 
-                        $cmd = exec('curl -F "Content-Type=audio/x-pcm;bit=16;rate=16000" -F "audio=@'.$filename.'-pcm.wav" asr.yandex.net/asr_xml\?key='.$key.'\&uuid='.$uuid .'\&topic='.$topic.'\&lang='.$lang, $xml);+$cmd = exec('curl -F "Content-Type=audio/x-pcm;bit=16;rate=16000" -F "audio=@'.$filename.'-pcm.wav" asr.yandex.net/asr_xml\?key='.$key.'\&uuid='.$uuid .'\&topic='.$topic.'\&lang='.$lang, $xml);
  
-                        #дербаним регекспом ответ сервера, выдёргиваем первое значение как наиболее релевантное +#дербаним регекспом ответ сервера, выдёргиваем первое значение как наиболее релевантное 
-                        $asr_res = implode($xml); +$asr_res = implode($xml); 
-                        if (preg_match('!<variant .*?>(.*)</variant>!si', $asr_res, $arr)) $voice_text = $arr[1]; +if (preg_match('!<variant .*?>(.*)</variant>!si', $asr_res, $arr)) $voice_text = $arr[1]; 
-                            else $voice_text='';+else $voice_text='';
  
-                                if (intval(substr_count($asr_res, 'оператор')) > 0) { +if (intval(substr_count($asr_res, 'оператор')) > 0) { 
-                                $ress = 1; #если в результатах есть слово "оператор", то в диалплан возвращаем 1; +$ress = 1; #если в результатах есть слово "оператор", то в диалплан возвращаем 1; 
-                                } elseif (intval(substr_count($asr_res, 'заказ')) > 0) { +} elseif (intval(substr_count($asr_res, 'заказ')) > 0) { 
-                                $ress = 2; #если в результатах есть слово "заказ", то в диалплан возвращаем 2; +$ress = 2; #если в результатах есть слово "заказ", то в диалплан возвращаем 2; 
-                                } elseif (intval(substr_count($asr_res, 'секретарь')) > 0) {+  } elseif (intval(substr_count($asr_res, 'секретарь')) > 0) {
                                 $ress = 3; #если в результатах есть слово "секретарь", то в диалплан возвращаем 3;                                 $ress = 3; #если в результатах есть слово "секретарь", то в диалплан возвращаем 3;
                                 } else {                                 } else {
voice2.1534847095.txt.gz · Последнее изменение: 2018/08/21 13:24 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux