gpt4 book ai didi

c# - 如何在 C# 中使用谷歌语音识别 API?

转载 作者:可可西里 更新时间:2023-11-01 08:25:54 24 4
gpt4 key购买 nike

我想从 C# 获取音频文件并发送到谷歌语音识别 API 以获得“语音到文本”的答案。

我的代码是这样的:

try
{
byte[] BA_AudioFile = GetFile(filename);
HttpWebRequest _HWR_SpeechToText = null;
_HWR_SpeechToText =
(HttpWebRequest)HttpWebRequest.Create(
"https://www.google.com/speech-api/v2/recognize?output=json&lang=" + DEFAULT_LANGUAGE + "&key=" + key);
_HWR_SpeechToText.Credentials = CredentialCache.DefaultCredentials;
_HWR_SpeechToText.Method = "POST";
_HWR_SpeechToText.ContentType = "audio/x-flac; rate=44100";
_HWR_SpeechToText.ContentLength = BA_AudioFile.Length;
Stream stream = _HWR_SpeechToText.GetRequestStream();
stream.Write(BA_AudioFile, 0, BA_AudioFile.Length);
stream.Close();

HttpWebResponse HWR_Response = (HttpWebResponse)_HWR_SpeechToText.GetResponse();
if (HWR_Response.StatusCode == HttpStatusCode.OK)
{
StreamReader SR_Response = new StreamReader(HWR_Response.GetResponseStream());
Console.WriteLine(SR_Response.ToString());
}

}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}

这部分用于上传 file.wav 并获取我从互联网上找到的 google API 的响应。

但我的代码总是捕获异常:

在调用 _HWR_SpeechToText.GetResponse() 之前,您必须将内容长度字节写入请求流;但是我已经写了 ContextLength。

所以我的问题是为什么我的程序失败了?是因为google链接还是我使用的HTTPWebRequest不当?

这是我获得 API key 的正确位置吗?

enter image description here

最佳答案

我自己对此进行了测试,如果您拥有有效的 API key ,下面是一个可行的解决方案。

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;

namespace GoogleRequest
{
class Program
{
static void Main(string[] args)
{
try
{

FileStream fileStream = File.OpenRead("good-morning-google.flac");
MemoryStream memoryStream = new MemoryStream();
memoryStream.SetLength(fileStream.Length);
fileStream.Read(memoryStream.GetBuffer(), 0, (int)fileStream.Length);
byte[] BA_AudioFile = memoryStream.GetBuffer();
HttpWebRequest _HWR_SpeechToText = null;
_HWR_SpeechToText =
(HttpWebRequest)HttpWebRequest.Create(
"https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=YOUR_API_KEY_HERE");
_HWR_SpeechToText.Credentials = CredentialCache.DefaultCredentials;
_HWR_SpeechToText.Method = "POST";
_HWR_SpeechToText.ContentType = "audio/x-flac; rate=44100";
_HWR_SpeechToText.ContentLength = BA_AudioFile.Length;
Stream stream = _HWR_SpeechToText.GetRequestStream();
stream.Write(BA_AudioFile, 0, BA_AudioFile.Length);
stream.Close();

HttpWebResponse HWR_Response = (HttpWebResponse)_HWR_SpeechToText.GetResponse();
if (HWR_Response.StatusCode == HttpStatusCode.OK)
{
StreamReader SR_Response = new StreamReader(HWR_Response.GetResponseStream());
Console.WriteLine(SR_Response.ReadToEnd());
}

}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}

Console.ReadLine();
}
}
}

关于c# - 如何在 C# 中使用谷歌语音识别 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148373/

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