我有一个小的wav声音文件,我想在其中获取文本,因此我使用Azure语音文本API对其进行了测试。
首先,我按照文档中的建议将音频文件转换为PCM-单声道-16K采样率。
并且我在文档示例here中的c#中使用此代码来上传文件并获取结果。
HttpWebRequest request = null;
request = (HttpWebRequest)HttpWebRequest.Create("https://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?language=en-US&format=detailed");
request.SendChunked = true;
request.Accept = @"application/json;text/xml";
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.ContentType = @"audio/wav; codec=audio/pcm; samplerate=16000";
request.Headers["Ocp-Apim-Subscription-Key"] = "my key";
// Send an audio file by 1024 byte chunks
using (FileStream fs = new FileStream("D:/b.wav", FileMode.Open, FileAccess.Read))
{
/*
* Open a request stream and write 1024 byte chunks in the stream one at a time.
*/
byte[] buffer = null;
int bytesRead = 0;
using (Stream requestStream = request.GetRequestStream())
{
/*
* Read 1024 raw bytes from the input audio file.
*/
buffer = new Byte[checked((uint)Math.Min(1024, (int)fs.Length))];
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
}
// Flush
requestStream.Flush();
}
}
string responseString;
Console.WriteLine("Response:");
using (WebResponse response = request.GetResponse())
{
Console.WriteLine(((HttpWebResponse)response).StatusCode);
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
responseString = sr.ReadToEnd();
}
Console.WriteLine(responseString);
Console.ReadLine();
}
我也尝试使用cUrl工具,也用Java编写它,因为我认为我使用的编程语言可能存在问题,因为我没有正确上传文件。
这是声音文件的链接,我想将其转换为文本here。
所以现在我需要帮助弄清楚问题是否出在声音文件的格式上?或从也许我没有正确上传的代码?还是来自API我的意思是不够准确?
我尝试将IBM语音转换为文本,并且所有文本都没有问题。
我现在正在使用Azure语音文本API的免费试用版,我想弄清楚如果有人有经验,问题出在哪里,看看我是否可以使用此API。
更新
我要清除的是我没有任何错误,只是我上传的声音文件的结果不完整,例如,我上传的声音文件他在声音"What is up with that"
的结尾说,我从Azure得到的结果是仅是第一个句子"I say that like it's a bad thing."
,我还上传了另一个包含"What is up with that"
的声音文件,只检查了here,它给了我一个空的结果。
{"RecognitionStatus":"NoMatch","Offset":17300000,"Duration":0}
那么,我想知道从语音到文本API Azure还是从我的代码或声音文件出现的问题,这是正常的吗?这就是我想得到的答案。
例如,当我在这些文件上测试另一个API时,它的工作方式就像IBM。
谢谢!