Организуем распознавание речи через Яндекс 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 Яндекса