尝试在C#中使用Google Speech2Text
本文关键字:Google Speech2Text | 更新日期: 2023-09-27 18:19:41
下面的简单代码试图将波形文件发布到Google Speech2Text服务,但总是失败,出现"网关超时(504)"或一般异常"操作超时"。有人能帮忙吗?
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);
}
}
非常感谢。
Shujaat
您的代码对我有效,但有以下更改:
Request.ContentType = "audio/x-flac; rate=8000";
并且您提供的文件需要是FLAC格式。
我用Windows录音机录制了一个小样本,它产生了一个WMA文件。然后我使用VLC播放器将WMA文件转换为FLAC(使用转换选项,确保以RAW格式、一个通道和8000 kbps输出)
一个很好的非c#参考,在注释