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

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


voice2

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
voice2 [2018/08/21 10:26]
kirill
voice2 [2018/08/21 16:24] (текущий)
Строка 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.1534847202.txt.gz · Последнее изменение: 2018/08/21 13:26 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux