Организуем распознавание речи через Яндекс speech api.
raspberry pi распознавание речи
29.10.2016
Инсталлируем:
apt-get install v4l-utils sox alsa-tools alsa-oss
Запускаем:
arecord -B --buffer-time=1000000 -f dat -r 16000 -d 4 -D plughw:1,0 send.wav php ya_speech.php
Код для работы с самим API
<?php /** * Генерация уникального $uuid * * @param int $min * @param int $max * @param int $count * * @return array */ function generateRandomSelection($min, $max, $count) { $result=array(); if($min>$max) return $result; $count=min(max($count,0),$max-$min+1); while(count($result)<$count) { $value=rand($min,$max-count($result)); foreach($result as $used) if($used<=$value) $value++; else break; $result[]=dechex($value); sort($result); } shuffle($result); return $result; } function recognize($file) { $key = 'XXXXX'; $uuid=generateRandomSelection(0,30,64); $uuid=implode($uuid); $uuid=substr($uuid,1,32); $curl = curl_init(); $url = 'https://asr.yandex.net/asr_xml?'.http_build_query(array( 'key'=>$key, 'uuid' => $uuid, 'topic' => 'queries', 'lang'=>'ru-RU' )); curl_setopt($curl, CURLOPT_URL, $url); $data=file_get_contents(realpath($file)); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // https://tech.yandex.ru/speechkit/cloud/doc/dg/concepts/speechkit-dg-recogn-params-docpage/ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: audio/x-wav')); //curl_setopt($curl, CURLOPT_VERBOSE, true); $response = curl_exec($curl); $err = curl_errno($curl); curl_close($curl); if ($err) { throw new exception("curl err $err"); } else { $oResponse = simplexml_load_string($response); $i = 1; foreach($oResponse->variant as $oVariant) { $sText = (string) $oVariant[0]; $aAttributes = $oVariant->attributes(); echo $i.': '.$sText.' ('.$aAttributes['confidence'].')'."\n"; $i++; } } } recognize('send.wav'); echo("Done\n");
Основная статья по API Яндекса