Непревзойденный результат от речи Azure к текстовому API - PullRequest
0 голосов
/ 09 сентября 2018


У меня есть небольшой звуковой файл wav, в котором я хочу получить его текст, поэтому я использовал Azure речь в текстовый API для его проверки.
Первым делом я конвертирую аудиофайл, как они рекомендовали в своей документации, в PCM - частота дискретизации Mono -16K.
и я использую этот код в 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, так как мне показалось, что, возможно, это проблема с языком программирования, который я использую, что я не загружаю файл правильно.
это ссылка на звуковой файл, который я хочу преобразовать в текст здесь .
Так что теперь мне нужно помочь разобраться, если проблема связана с форматом звукового файла? или из кода, который я не могу загрузить его правильно? или это из API я имею ввиду быть недостаточно точным?
Я попробовал IBM речи в текст, и он получил весь текст без проблем.
Сейчас я использую бесплатную пробную версию Azure для преобразования речи в текст, и я хочу выяснить, в чем заключается проблема, если у кого-то есть опыт, чтобы узнать, буду ли я работать с этим API или нет.

Обновление
Я хочу пояснить, что я не получил никакой ошибки, я только что получил неполный результат для моего звукового файла, который я загружаю, например, звуковой файл, который я загружаю, он сказал в конце звука "What is up with that", результат, который я получил от Azure, это просто только в первом предложении "I say that like it's a bad thing.", также я загружаю другой звуковой файл, который содержит "What is up with that", отметьте только здесь , и он просто дает мне пустой результат, подобный этому.

{"RecognitionStatus":"NoMatch","Offset":17300000,"Duration":0}

так что все, что я хочу знать, нормально ли это из API речи для текста или проблемы с моим кодом или из звукового файла? вот что я хочу получить с ним ответ.
когда я тестировал другой API на этих файлах, он работал как IBM, например.
Заранее спасибо.

...