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

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


voice2

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
voice2 [2018/08/21 10:26]
kirill
voice2 [2018/08/21 13:24] (текущий)
kirill
Строка 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); 
 +$agivars[$agivar[0]] = trim($agivar[1]);​ 
 +      } 
 +      extract($agivars);
  
-                    ​$agivar ​explode(':',​ $agivar); +$filename ​= $_SERVER["​argv"​][1]; 
-                        $agivars[$agivar[0]] = trim($agivar[1])+#ключ от yandex speech kit  можно получить на: 
-                        } +#​https://​developer.tech.yandex.ru/​ 
-                        ​extract($agivars);+#​требуется учётка яндекса 
 +$key = '​6be78e3c-6184-4f83-b18d-cf33c6727735'​;
  
-                        $filename = $_SERVER["​argv"​][1];​ 
  
-                        ​#ключ от yandex speech kit  ​можно получить на: +#$topic = '​maps'​ — тема для распознавания,​ возможны следующие варианты:​ 
-                        #https://​developer.tech.yandex.ru/ +#• freeform — произвольный ​текст, заметки и т.д. Вариант применения:​ переводим в текст сообщение голосовой ​почты и отправляем его на email или виде SMS. 
-                        #требуется учётка яндекса + #• general — web поисковые запросы,​ не могу придумать к чему это можно применить в данном контексте;​ 
-                        $key '​6be78e3c-6184-4f83-b18d-cf33c6727735'​;+#• maps — адреса,​ GEO-точки (название баров, автозаправочные станции,​ гостиницы и так далее),​ и т.д.
 +#• music — названия песен, музыкальных групп и т.д. 
 +$topic = "​freeform";​ 
 +#$lang = '​ru-RU'​ — язык на котором будет происходить распознавание,​ на данный момент поддерживается ​русский '​ru-RU'​ и турецкий '​tr-TR',​ причем турецкий поддерживается только ​для тем «general» и «maps»; 
 +$lang "ru-RU";
  
 +#​генерация рандомного ID
 +$randtoken=rand(1000);​
 +$uuid=md5($randtoken);​
  
-                        ​#$topic = '​maps'​ — тема для распознавания,​ возможны следующие варианты:​ +#​перекодируем файл в формат ​яндекса 
-                        #• freeform — произвольный текст, заметки и т.д. Вариант применения:​ переводим в текст сообщение голосовой почты и отправляем его на email или виде SMS. +system('sox '.$filename.'.wav -r 16000 -b 16 -c 1 '.$filename.'​-pcm.wav'​);
-                        #• general — web поисковые запросы, не могу придумать к чему это можно применить в данном контексте; +
-                        #• maps — адреса,​ GEO-точки ​(название баров, автозаправочные станции,​ гостиницы и так далее),​ и т.д.+
-                        #• music — названия песен, музыкальных групп и т.д. +
-                        ​$topic = "​freeform"​;+
  
-                        ​#$lang = '​ru-RU'​ — язык на котором будет происходить распознавание, на данный ​момент поддерживается русский ​'ru-RU' ​и турецкий ​'tr-TR', причем турецкий поддерживается только для тем «general» и «maps»; +#отсылаем файл ​и получаем ​в ответ ​xml 
-                        ​$lang = "​ru-RU"​;+$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);
  
-                        ​#генерация рандомного ID +#дербаним регекспом ответ сервера, выдёргиваем первое значение как наиболее релевантное 
-                        $randtoken=rand(1000); +$asr_res ​implode($xml); 
-                        ​$uuid=md5($randtoken);+if (preg_match('​!<​variant .*?>​(.*)</​variant>​!si', ​$asr_res, $arr)) $voice_text = $arr[1]; 
 +else $voice_text=''​;
  
-                        #​перекодируем файл в формат яндекса +if (intval(substr_count($asr_res,​ '​оператор'​)) > 0) { 
-                        system('​sox '​.$filename.'​.wav -r 16000 -b 16 -c 1 '​.$filename.'​-pcm.wav'​);​ +$ress = 1; #если в результатах есть слово "​оператор",​ то в диалплан возвращаем 1; 
- +} elseif (intval(substr_count($asr_res,​ '​заказ'​)) > 0) { 
-                        #​отсылаем файл и получаем в ответ xml +$ress = 2; #если в результатах есть слово "​заказ",​ то в диалплан возвращаем 2; 
-                        $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); +  } elseif (intval(substr_count($asr_res,​ '​секретарь'​)) > 0) {
- +
-                        #​дербаним регекспом ответ сервера,​ выдёргиваем первое значение как наиболее релевантное +
-                        $asr_res = implode($xml);​ +
-                        if (preg_match('​!<​variant .*?>​(.*)</​variant>​!si',​ $asr_res, $arr)) $voice_text = $arr[1]; +
-                            else $voice_text='';​ +
- +
-                                ​if (intval(substr_count($asr_res,​ '​оператор'​)) > 0) { +
-                                $ress = 1; #если в результатах есть слово "​оператор",​ то в диалплан возвращаем 1; +
-                                } elseif (intval(substr_count($asr_res,​ '​заказ'​)) > 0) { +
-                                $ress = 2; #если в результатах есть слово "​заказ",​ то в диалплан возвращаем 2; +
-                                } elseif (intval(substr_count($asr_res,​ '​секретарь'​)) > 0) {+
                                 $ress = 3; #если в результатах есть слово "​секретарь",​ то в диалплан возвращаем 3;                                 $ress = 3; #если в результатах есть слово "​секретарь",​ то в диалплан возвращаем 3;
                                 } else {                                 } else {
voice2.txt · Последние изменения: 2018/08/21 13:24 — kirill