C# 使用C语言的Google语音到文本API#

C# 使用C语言的Google语音到文本API#,c#,json.net,speech-recognition,speech-to-text,google-speech-api,C#,Json.net,Speech Recognition,Speech To Text,Google Speech Api,我正在使用谷歌语音识别对音频文件的语音到文本进行识别。我作为输出得到的响应只显示{“result”:[]}。我没有看到任何输出结果。 我已经从和中选择了我的代码。我已经尝试了以上链接中的几乎所有答案,但我仍然得到了错误 我的代码是: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net;

我正在使用谷歌语音识别对音频文件的语音到文本进行识别。我作为输出得到的响应只显示{“result”:[]}。我没有看到任何输出结果。 我已经从和中选择了我的代码。我已经尝试了以上链接中的几乎所有答案,但我仍然得到了错误

我的代码是:

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

namespace google_api
{
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=mykey");
            _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()+SR_Response.ToString());

                string responseFromServer = (SR_Response.ReadToEnd());
                String[] jsons = responseFromServer.Split('\n');
                String text = "";
                foreach (String j in jsons)
                {
                    dynamic jsonObject = JsonConvert.DeserializeObject(j);
                    if (jsonObject == null || jsonObject.result.Count <= 0)
                    {
                        continue;
                    }
                    text = jsonObject.result[0].alternative[0].transcript;
                }
                Console.WriteLine("MESSAGE : "+text);
            }

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

        Console.ReadLine();
    }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
Net系统;
使用System.IO;
使用Newtonsoft.Json;
名称空间google_api
{
班级计划
{
静态void Main(字符串[]参数)
{
尝试
{
FileStream FileStream=File.OpenRead(“早上好,google.flac”);
MemoryStream MemoryStream=新的MemoryStream();
memoryStream.SetLength(fileStream.Length);
读取(memoryStream.GetBuffer(),0,(int)fileStream.Length);
字节[]BA_AudioFile=memoryStream.GetBuffer();
HttpWebRequest\u HWR\u SpeechToText=null;
_HWR_SpeechToText=
(HttpWebRequest)HttpWebRequest.Create(
"https://www.google.com/speech-api/v2/recognize?output=json&lang=en-美国&key=mykey”);
_HWR_SpeechToText.Credentials=CredentialCache.DefaultCredentials;
_HWR_SpeechToText.Method=“POST”;
_HWR_SpeechToText.ContentType=“音频/x-flac;速率=44100”;
_HWR_SpeechToText.ContentLength=BA_AudioFile.Length;
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=新的StreamReader(HWR_Response.GetResponseStream());
Console.WriteLine(SR_Response.ReadToEnd()+SR_Response.ToString());
字符串responseFromServer=(SR_Response.ReadToEnd());
字符串[]jsons=responseFromServer.Split('\n');
字符串文本=”;
foreach(jsons中的字符串j)
{
动态jsonObject=JsonConvert.DeserializeObject(j);

如果(jsonObject==null | | | jsonObject.result.Count)您是否打印并检查了
responseFromServer
?是的,我尝试使用Console.WriteLine(SR_Response.ReadToEnd()+SR|Response.ToString())打印它;它显示的输出是{“result”:[]}API正在响应我在google API管理器的仪表板上检查了它,它显示了我的活动。Json obj的响应有两行。第二行有音频文本来打印它,我们需要对它进行解析。我也试过了,它没有打印任何内容。我想缓冲区没有将.flac文件加载到google API,还有什么其他原因导致json响应文件为空。我认为应该下载音频文件。根据这篇文章,音频文件可能有格式问题,但是,我无法安装任何东西来测试
FLAC
文件,因此您可能需要自己工作。您是否打印并检查了
responseFromServer
?是的,我尝试使用控制台打印它。WriteLine(SR_Response.ReadToEnd()+SR_Response.ToString());它显示的输出是{“result”:[]API正在响应我在google API管理器的仪表板上检查了它,它显示了我的活动。Json obj的响应有两行。第二行有音频文本来打印它,我们需要对它进行解析。我也试过了,它没有打印任何内容。我想缓冲区没有将.flac文件加载到google API,还有什么其他原因导致json响应文件为空。我认为应该下载音频文件。根据本文,音频文件可能存在格式问题,但是,我无法安装任何东西来测试
FLAC
文件,因此您可能需要自己工作。