Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用谷歌语音API_C#_Api_Speech - Fatal编程技术网

C# 使用谷歌语音API

C# 使用谷歌语音API,c#,api,speech,C#,Api,Speech,在我基于C#的应用程序中实现Google语音API的代码是什么?我发现可以创建一个音频文件,并将其发送到和接收为文本。如果您以前尝试过,请您解释一下如何做,或者提供代码给我好吗?我被困在这里有一段时间了 非常感谢 迄今为止的代码: SpeechRecognitionEngine rec = new SpeechRecognitionEngine(); SpeechSynthesizer dummy = new SpeechSynthesizer(); public F

在我基于C#的应用程序中实现Google语音API的代码是什么?我发现可以创建一个音频文件,并将其发送到和接收为文本。如果您以前尝试过,请您解释一下如何做,或者提供代码给我好吗?我被困在这里有一段时间了

非常感谢

迄今为止的代码:

    SpeechRecognitionEngine rec = new SpeechRecognitionEngine();
    SpeechSynthesizer dummy = new SpeechSynthesizer();


    public Form1()
    {
        InitializeComponent();


        Choices searching = new Choices("Porsche");
        GrammarBuilder searchService = new GrammarBuilder("Search");

        searchService.Append(searching);


        // Create a Grammar object from the GrammarBuilder and load it to the  recognizer.
        Grammar googleGrammar = new Grammar(searchService); ;
        rec.RequestRecognizerUpdate();
        rec.LoadGrammar(googleGrammar);

        // Add a handler for the speech recognized event.
        rec.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(_recognizer_SpeechRecognized);

        // Configure the input to the speech recognizer.
        rec.SetInputToDefaultAudioDevice();

        // Start asynchronous, continuous speech recognition.
        rec.RecognizeAsync(RecognizeMode.Multiple);
    }




    private void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {

        try
        {
            FileStream FS_Audiofile = new FileStream("temp.flac", FileMode.Open, FileAccess.Read);
            BinaryReader BR_Audiofile = new BinaryReader(FS_Audiofile);
            byte[] BA_AudioFile = BR_Audiofile.ReadBytes((Int32)FS_Audiofile.Length);
            FS_Audiofile.Close();
            BR_Audiofile.Close();

            HttpWebRequest _HWR_SpeechToText = null;

            _HWR_SpeechToText = (HttpWebRequest)WebRequest.Create("http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=de-DE&maxresults=1&pfilter=0");

            _HWR_SpeechToText.Method = "POST";
            _HWR_SpeechToText.ContentType = "audio/x-flac; rate=44100";
            _HWR_SpeechToText.ContentLength = BA_AudioFile.Length;
            _HWR_SpeechToText.GetRequestStream().Write(BA_AudioFile, 0, BA_AudioFile.Length);

            HttpWebResponse HWR_Response = (HttpWebResponse)_HWR_SpeechToText.GetResponse();
            if (HWR_Response.StatusCode == HttpStatusCode.OK)
            {
                StreamReader SR_Response = new StreamReader(HWR_Response.GetResponseStream());
                textBox1.Text = SR_Response.ToString();

            }

        }
        catch (Exception ex)
        {

        }  
    }
SpeechRecognitionEngine rec=newspeechrecognitionengine();
SpeechSynthesizer dummy=新的SpeechSynthesizer();
公共表格1()
{
初始化组件();
选择搜索=新选择(“保时捷”);
GrammarBuilder searchService=新的GrammarBuilder(“搜索”);
searchService.Append(搜索);
//从GrammarBuilder创建语法对象并将其加载到识别器。
语法谷歌语法=新语法(搜索服务);
rec.RequestRecognitizerUpdate();
记录加载语法(谷歌语法);
//为语音识别事件添加处理程序。
记录演讲者+=
新事件处理程序(_识别器_speechrecogned);
//配置语音识别器的输入。
rec.setInputOdeFaultAudioDevice();
//启动异步、连续语音识别。
rec.RecognizeAsync(RecognizeMode.Multiple);
}
私有void _识别器_SpeechRecognized(对象发送方,SpeechRecognizedEventArgs e)
{
尝试
{
FileStream FS_Audiofile=newfilestream(“temp.flac”,FileMode.Open,FileAccess.Read);
BinaryReader BR_Audiofile=新的BinaryReader(FS_Audiofile);
byte[]BA_AudioFile=BR_AudioFile.ReadBytes((Int32)FS_AudioFile.Length);
FS_Audiofile.Close();
BR_Audiofile.Close();
HttpWebRequest\u HWR\u SpeechToText=null;
_HWR_SpeechToText=(HttpWebRequest)WebRequest.Create(“http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=de-DE&maxresults=1&pfilter=0“;
_HWR_SpeechToText.Method=“POST”;
_HWR_SpeechToText.ContentType=“音频/x-flac;速率=44100”;
_HWR_SpeechToText.ContentLength=BA_AudioFile.Length;
_HWR_SpeechToText.GetRequestStream().Write(BA_AudioFile,0,BA_AudioFile.Length);
HttpWebResponse HWR_Response=(HttpWebResponse)HWR_SpeechToText.GetResponse();
if(HWR_Response.StatusCode==HttpStatusCode.OK)
{
StreamReader SR_Response=新的StreamReader(HWR_Response.GetResponseStream());
textBox1.Text=SR_Response.ToString();
}
}
捕获(例外情况除外)
{
}  
}

这不会从Google返回任何值。

只要发送的文件不太长,下面的代码就可以在curl中工作。。。不到5秒

curl-X POST-H“内容类型:音频/X-flac;速率=16000”\ -T seg_1.flac“?\xjerr=1&client=speech2text&maxresults=1&lang=en-US&key=…48593”

{“状态”:0,“id”:“,”假设“:[{“话语”:”现在是 最喜欢的消遣”,“信心”:0.95148802}]}

所以,编码到speechX或flac

记录中包括一个parm和您的采样率

包括你的钥匙


保持文件的持续时间短(您必须在访问API之前分割文件)

您发送到Google的FS_音频文件流是空的,这就是为什么您没有收到任何回复

你错过了这个电话:

recognizedAudio.WriteToAudioStream(FS_Audiofile);

卡在哪里?发布您的尝试和不适合您的地方,因此不是免费的代码服务,我们不是来为您编码的,而是来帮助您使代码正常工作的。@Prix Done!谢谢欢迎来到Stack Overflow!请不要在问题标题中包含关于所用语言的信息,除非没有它就没有意义。标记用于此目的。@user3306938您忘记说明代码有什么问题,并且不适用于您。@Prix它就在代码下面。基本上我录音的字符串值不会被打印出来