我正在尝试使用PHP将Base64字符串发送到Google的语音文本API。由于烦人的原因,我无法使用composer来获取PHP库,因此我试图通过cURL使用Speech to Text API。
$file = base64_encode( file_get_contents(__DIR__.'/test.ogg') );
$data = array(
'config' => array(
"encoding" => 'OGG_OPUS',
'sampleRateHertz' => 16000,
"languageCode"=> "en-GB"
),
"audio"=> array (
"content"=> $file
)
);
$ch = curl_init("https://speech.googleapis.com/v1/speech:recognize?key=AIzaSyBxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxx");
curl_setopt_array($ch, array(
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
)
));
$json = curl_exec($ch);
我所知道的:
所以,我希望这是一个简单的问题-我在做什么错了?
答案 0 :(得分:0)
我获得了您的确切代码,并用PHP 7.1亲自运行了该代码,但从API返回了无效的密钥错误。这表明该代码本身可以正常工作,并且与您的系统,网络或某些配置有关。
关于您可以研究的内容的一些建议;
答案 1 :(得分:0)
好的。原来Google API对于Ogg Opus文件确实很挑剔。通过ffmpeg运行文件以将其转换为flac即可对其进行排序。
有些奇怪。 Chrome(Google)创建一个语音转文本系统(Google)无法处理的webm(Google)作品文件。将其转换为API声称可以处理的Ogg Opus文件,并且它会以静默方式失败。将该Ogg Opus转换为flac文件(因此,从有损变为无损,这是很重要的),它突然起作用了。而且效果非常好。
或者将来有人绊倒这个,ffmpeg命令是
key1, key2, key3, key4
这将其设置为16000 bps,但是我一生都无法记住:a的作用。