Ich versuche, einen mp4-Videoclip in eine FLAC-Audiodatei zu konvertieren und dann google rede die Wörter aus dem Video auszuspucken, damit ich erkennen kann, ob bestimmte Wörter wurden gesagt.Google Speech API "Abtastrate in Anfrage passt nicht FLAC-Header"
Ich habe alles außer arbeiten, dass ich einen Fehler von der Speech API bin immer:
{
"error": {
"code": 400,
"message": "Sample rate in request does not match FLAC header.",
"status": "INVALID_ARGUMENT"
}
}
ich FFMPEG um bin mit dem mp4 in eine FLAC-Datei zu konvertieren. Ich gebe an, dass die FLAC-Datei 16 Bit im Befehl ist, aber wenn ich mit der rechten Maustaste auf die FLAC-Datei klicke, sagt Windows mir, dass es 302kbps ist.
Hier ist meine PHP-Code:
// convert mp4 video to 16 bit flac audio file
$cmd = 'C:/wamp/www/ffmpeg/bin/ffmpeg.exe -i C:/wamp/www/test.mp4 -c:a flac -sample_fmt s16 C:/wamp/www/test.flac';
exec($cmd, $output);
// convert flac to text so we can detect if certain words were said
$data = array(
"config" => array(
"encoding" => "FLAC",
"sampleRate" => 16000,
"languageCode" => "en-US"
),
"audio" => array(
"content" => base64_encode(file_get_contents("test.flac")),
)
);
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=MY_API_KEY');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
Es gibt einen Unterschied zwischen dem Sample-Format (das Sie auf 16 gesetzt haben) und der Sample-Rate. – fakedad
Danke Ich habe es herausgefunden und die Antwort gegeben. Scheint, dass das Google Speech API mit den Bits, dem Sample und dem Kanal äußerst wählerisch ist. – kjdion84