ПУСТОЙ результат выглядит так:
json[0] "{\"result\":[]}"
json[1] ""
НЕПУСТОЙ результат (желаемый результат) выглядит так:
json[0] "{\"result\":[]}"
json[1] "{\"result\":[{\"alternative\":[{\"transcript\":\"good morning Google how are you feeling today\",\"confidence\":0.987629}],\"final\":true}],\"result_index\":0}"
json[2] ""
У меня есть эта функция, которая должна взять файл ".flac" и превратить его в текст. По какой-то причине только эти два образца файла ".flac" возвращают строку при передаче через Google Speech API, другие файлы flac возвращают ПУСТОЙ результат. Та же проблема, что и у этих парней: ссылка
Вот все мои файлы flac: ссылка
my.flac
и this_is_a_test.flac
работают отлично, Google Speech API предоставляет мне объект jason с текстом в нем.
однако recorded.flac
НЕ работает с Google Speech API и дает мне ПУСТОЙ объект json.
ОТЛАДКА:
- Я подумал, что проблема в микрофоне, и я записал
recorded.flac
много раз, громко и четко, и преобразовал его во flac с помощью ffmpeg. Но Google Speech API по-прежнему не может распознатьrecorded.flac
- # P8 #
# P9 #
# P10 #
_HWR_SpeechToText.ContentType = "audio / x-flac; rate = 44100";
Then, none of them worked, not a single flac file. so i changed it back.
Вот мой код API речи Google, который превращает файлы FLAC в ТЕКСТ (я не думаю, что это необходимо, но что угодно):
public void convert_to_text()
{
FileStream fileStream = File.OpenRead("recorded.flac");//my.flac
MemoryStream memoryStream = new MemoryStream();
memoryStream.SetLength(fileStream.Length);
fileStream.Read(memoryStream.GetBuffer(), 0, (int)fileStream.Length);
byte[] BA_AudioFile = memoryStream.GetBuffer();
HttpWebRequest _HWR_SpeechToText = null;
_HWR_SpeechToText = (HttpWebRequest)HttpWebRequest.Create("https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=" + ACCESS_GOOGLE_SPEECH_KEY);
_HWR_SpeechToText.Credentials = CredentialCache.DefaultCredentials;
_HWR_SpeechToText.Method = "POST";
_HWR_SpeechToText.ContentType = "audio/x-flac; rate=44100";
_HWR_SpeechToText.ContentLength = BA_AudioFile.Length;
Stream stream = _HWR_SpeechToText.GetRequestStream();
stream.Write(BA_AudioFile, 0, BA_AudioFile.Length);
stream.Close();
HttpWebResponse HWR_Response = (HttpWebResponse)_HWR_SpeechToText.GetResponse();
StreamReader SR_Response = new StreamReader(HWR_Response.GetResponseStream());
string responseFromServer = (SR_Response.ReadToEnd());
String[] jsons = responseFromServer.Split('\n');
foreach (String j in jsons)
{
dynamic jsonObject = JsonConvert.DeserializeObject(j);
if (jsonObject == null || jsonObject.result.Count <= 0)
{
continue;
}
text = jsonObject.result[0].alternative[0].transcript;
jsons = null;
}
label1.Content = text;
}