gpt4 book ai didi

c# - Google Speech API v2 结果为空白

转载 作者:行者123 更新时间:2023-11-30 17:48:18 25 4
gpt4 key购买 nike

我想在我当前的项目中使用 Google Speech API。

我从 here 获得了有关如何访问 API 的信息

如 github 上所述,您必须向服务器发送一个 post webrequest 并以 json 形式返回结果。

我还从 here 获得了一些用于 v1 api 的源代码

设置请求并不难:

WebRequest request = WebRequest.Create(Constants.GoogleRequestString);
request.Method = "POST";
request.ContentType = "audio/x-flac; rate=" + sampleRate;
request.ContentLength = bytes.Length;

在我的示例中,Constants.GoogleRequestString 等于 https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=AIzaSyCnl6MRydhw_5fLXIdASxkLJzcJh5iX0M4

我从 github 链接下载了 .flac 文件并用 c# 编写了一个小程序,它加载 flac 文件的字节并使用稍微修改的方法将其发送到服务器 GoogleRequest(byte[] bytes, int 采样率)

我按照方法中所示打开流,并将所有字节发送到服务器。我得到了回应,但是

我得到的 JSON 字符串是:"{\"result\":[]}"

我不知道为什么它不起作用。文件或文件中的语音文本不正确(但如果我用 vlc 收听它,我可以清楚地听到语音文本)或我的程序仍然存在一些错误。

你遇到过speech-api没有结果的问题吗?它不应该说类似result: couldn't understand what is spoken 或任何其他错误消息吗?

我刚刚试用了 .wav 文件。这对我有用。

最佳答案

假设您的代码类似于以下内容,则没有问题:

var uriBuilder = new UriBuilder(
"https",
"www.google.com",
443,
"speech-api/v2/recognize",
"?output=json&lang=en-us&key=YOURAPIKEY");
int sampleRate = 44100;

using (var stream = File.Open("c:\\tmp\\g2.flac", FileMode.Open))
{

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(uriBuilder.Uri);
request.Method = "POST";
request.ContentType = "audio/x-flac; rate=" + sampleRate;
request.AutomaticDecompression = DecompressionMethods.GZip;

stream.CopyTo(request.GetRequestStream());
try
{
using (var resp = request.GetResponse().GetResponseStream())
{
using (var sr = new StreamReader(resp))
{
Debug.WriteLine(sr.ReadToEnd());
}
}
}
catch(WebException ee)
{
var all = new StreamReader(ee.Response.GetResponseStream()).ReadToEnd();
Debug.WriteLine(all);
}
}

但重要的是 FLAC 文件的确切格式。我用了Audacity控制如何保存我的音轨。

录制后我将轨道设置更改为:

  • 单声道
  • 示例格式:16 位 PCM
  • 速率:44100 赫兹

以下屏幕截图显示了这些设置:

audacity settings

使用默认的立体声轨道和 32 位浮点样本格式,我无法让 Speech API 产生任何其他结果,然后你也得到了空的 json 有效负载。

通过上述设置,我的结果是:

{
"result" : []
}{
"result" : [{
"alternative" : [{
"transcript" : "translate this",
"confidence" : 0.92849225
}, {
"transcript" : "translate days"
}, {
"transcript" : "translate dish"
}, {
"transcript" : "translate fish"
}, {
"transcript" : "translate these"
}
],
"final" : true
}
],
"result_index" : 0
}

我的英语发音不太好,因为谷歌认为我想翻译 fish ...

如果您收到 http 错误(如 403 Forbidden),异常处理程序会尝试从 http 正文中读取完整的响应。如果您的身份验证 key 不正确,它会告诉您。

要让您的 api key 与 Speech API 一起工作,请按照说明 here 进行操作

Make sure you are a member of chromium-dev@chromium.org (you can just subscribe to chromium-dev and choose not to receive mail).

之后您可以创建服务器 key :

enter image description here

关于c# - Google Speech API v2 结果为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com