无法将Azure语音结果转换为文本API

时间:2018-09-09 00:30:35

标签: c# azure speech-to-text azure-cognitive-services


我有一个小的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。
谢谢!

0 个答案:

没有答案