C#中的Google演讲文字API

mus*_*a27 5 c# google-api speech-to-text

当flac文件使用Windows的录音机录制手册并使用软件转换器转换时,我的程序从谷歌获得正确的响应.
但是当我使用我的程序记录的文件时,我从谷歌获得了"{"结果":[]}".我该怎么办?这是我的代码:
发件人:

    private static void CopyStream(FileStream fileStream, Stream requestStream)
    {
        var buffer = new byte[32768];
        int read;
        while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
        {
            requestStream.Write(buffer, 0, read);
        }
    }

    private static void ConfigureRequest(HttpWebRequest request)
    {
        request.KeepAlive = true;
        request.SendChunked = true;
        request.ContentType = "audio/x-flac; rate=44100";
        request.UserAgent =
            "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
        request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip,deflate,sdch");
        request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-GB,en-US;q=0.8,en;q=0.6");
        request.Headers.Set(HttpRequestHeader.AcceptCharset, "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
        request.Method = "POST";
    }
    using (var fileStream = new FileStream(@"C:\Users\Ahmad Mustofa\Documents\Visual Studio 2010\Projects\FP\FP\bin\Debug\voice.flac", FileMode.Open))
    {
        const string requestUrl = "https://www.google.com/speech-api/v2/recognize?output=json&lang=ar-sa&key=AIzaSyBJ6VJ326Rpb23msih2wGhXENEwU1TF1PA&client=chromium&maxresults=1&pfilter=2";
        var request = (HttpWebRequest)WebRequest.Create(requestUrl);
        ConfigureRequest(request);
        var requestStream = request.GetRequestStream();
        CopyStream(fileStream, requestStream);

        using (var response = request.GetResponse())
        {
            using (var responseStream = response.GetResponseStream())
            {
                using (var zippedStream = new GZipStream(responseStream, CompressionMode.Decompress))
                {
                     using (var sr = new StreamReader(zippedStream))
                     {
                          var res = sr.ReadToEnd();
                          state.Text = res;
                     }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

wav记录器:

        private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
        {
             if (waveWriter == null) return;

             waveWriter.WriteData(e.Buffer, 0, e.BytesRecorded);
             waveWriter.Flush();
        }
        fileName = "C:\\Users\\Ahmad Mustofa\\Documents\\Visual Studio 2010\\Projects\\FP\\FP\\bin\\debug\\voice.wav";
        int deviceNumber = hardware.SelectedItems[0].Index;
        try
        {
            sourceStream = new NAudio.Wave.WaveIn();
            sourceStream.DeviceNumber = deviceNumber;
            sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels);

            sourceStream.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(sourceStream_DataAvailable);
            waveWriter = new NAudio.Wave.WaveFileWriter(fileName, sourceStream.WaveFormat);

            sourceStream.StartRecording();
        }
        catch (Exception ex)
        {
            state.Text = "disini" + ex.Message;
        }
Run Code Online (Sandbox Code Playgroud)

flac转换器:

        string inputFile = Path.Combine("wav ", input);
        string outputFile = Path.Combine("flac", Path.ChangeExtension(input, ".flac"));

        if (!File.Exists(inputFile))
            throw new ApplicationException("Input file " + inputFile + " cannot be found!");

        WavReader wav = new WavReader(inputFile);

        using (var flacStream = File.Create(outputFile))
        {
            FlacWriter flac = new FlacWriter(flacStream, wav.BitDepth, wav.Channels, wav.SampleRate);
            // Buffer for 1 second's worth of audio data
            byte[] buffer = new byte[wav.Bitrate / 8];
            int bytesRead;
            do
            {
                bytesRead = wav.InputStream.Read(buffer, 0, buffer.Length);
                flac.Convert(buffer, 0, bytesRead);
            } while (bytesRead > 0);
            flac.Dispose();
            flac = null;
        }
Run Code Online (Sandbox Code Playgroud)

小智 0

用它来得到话语(短语)和置信度(%)

     string toParse=(VALUE RETURNED BY GOOGLE)
        var trsc1 = @"transcript"":""";
        var trsc2 = @""",""confidence"":";
        var trsc3 = @"}],""final"":";
        var start = toParse.IndexOf(trsc1) + trsc1.Length;
        var end = toParse.IndexOf(trsc2);
        var end2 = toParse.IndexOf(trsc3);
        var vv1 = toParse.Substring(start, end - start);
        var vv2 = toParse.Substring(end + trsc2.Length, end2 - (end + trsc2.Length));
        vv2 = vv2.Trim().Replace(".", ",");

        float confidence = (float)Math.Round(double.Parse(vv2), 2);
        string utterance = vv1;
Run Code Online (Sandbox Code Playgroud)