2012-01-08 40 views
4

以下簡單代碼嘗試將一個wave文件發佈到Google Speech2Text服務,但始終因「網關超時(504)」或一般異常「操作超時」而失敗。任何人都可以幫忙嗎?試圖在C#中使用Google Speech2Text

public void ProcessWaveFile(string path) 
    { 
     HttpWebRequest request = 
      (HttpWebRequest)HttpWebRequest.Create(
       "https://www.google.com/"+ 
       "speech-api/v1/recognize?"+ 
       "xjerr=1&client=speech2text&lang=en-US&maxresults=10"); 

     ServicePointManager.ServerCertificateValidationCallback += 
        delegate { return true; }; 

     request.Timeout = 60000; 
     request.Method = "POST"; 
     request.KeepAlive = true;   
     request.ContentType = "audio/wav"; 
     request.UserAgent = "speech2text"; 

     FileInfo fInfo = new FileInfo(path); 
     long numBytes = fInfo.Length; 
     byte[] data; 

     using (FileStream fStream = new FileStream(
              path, 
              FileMode.Open, 
              FileAccess.Read)) 
     { 
      data = new byte[fStream.Length]; 
      fStream.Read(data, 0, (int)fStream.Length); 
      fStream.Close(); 
     } 

     using (Stream wrStream = request.GetRequestStream()) 
      wrStream.Write(data, 0, data.Length); 

     try 
     { 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      var resp = response.GetResponseStream(); 

      if (resp != null) 
      { 
       StreamReader sr = new StreamReader(resp); 
       MessageBox.Show(sr.ReadToEnd()); 

       resp.Close(); 
       resp.Dispose(); 
      } 
     } 
     catch (System.Exception ee) 
     { 
      MessageBox.Show(ee.Message); 
     }   
    } 

非常感謝。

舒賈特

回答

2

您的代碼對我的作品有以下變化:

Request.ContentType = "audio/x-flac; rate=8000"; 

和您提供的需求是在FLAC格式的文件。

我用Windows Sound Recorder錄製了一個小樣本,它產生了一個WMA文件。然後我用VLC Player一些擴展API文檔轉換成WMA文件,FLAC(使用轉換選項,請務必在RAW格式輸出,一個通道和8000 Kbps)的

一個好的non c# reference用,以及在評論