马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

C#调用百度语音识别教程

[复制链接]
查看3961 | 回复0 | 2016-5-16 09:29:34 | 显示全部楼层 |阅读模式
此代码转载博客园,代码未经本人测试。

百度语音识别API文档地址:http://yuyin.baidu.com/docs/asr/57
代码:

[C#] 纯文本查看 复制代码
public string API_id = "8888"; //你的ID

       public string API_record = null;

       public string API_record_format = "wav";

       public string API_record_HZ = "16000";

       public string API_key = "geovindu"; //你的KEY

       public string API_secret_key = "55519"; //你的SECRRET_KEY

       public string API_language = "zh";

       public string API_access_token = null;

       public string strJSON = "";

 

       //录音

       [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]

       public static extern int mciSendString(

        string lpstrCommand,

        string lpstrReturnString,

        int uReturnLength,

        int hwndCallback

       );

       /// <summary>

       /// 

       /// </summary>

       public Form1()

       {

           InitializeComponent();

       }

 

       /// <summary>

       /// 

       /// </summary>

       /// <param name="sender"></param>

       /// <param name="e"></param>

       private void Form1_Load(object sender, EventArgs e)

       {

           API_record=Application.StartupPath + "\\上班.wav";

           API_access_token = getStrAccess(API_key, API_secret_key);

 

       }

 

       /// <summary>

       /// 

       /// </summary>

       /// <param name="sender"></param>

       /// <param name="e"></param>

       private void button1_Click(object sender, EventArgs e)

       {

           this.textBox2.Text = getStrText(API_id, API_access_token, API_language, API_record, API_record_format, API_record_HZ);

 

       }

       /// <summary>

       /// 

       /// </summary>

       /// <param name="para_API_key">你的KEY</param>

       /// <param name="para_API_secret_key">你的SECRRET_KEY</param>

       /// <returns></returns>

       public string getStrAccess(string para_API_key, string para_API_secret_key)

       {

 

           //方法参数说明:             

           //para_API_key:API_key(你的KEY)             

           //para_API_secret_key(你的SECRRET_KEY)             

           //方法返回值说明:             

           //百度认证口令码,access_token             

           string access_html = null;

           string access_token = null;

           string getAccessUrl = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials" +"&client_id=" + para_API_key + "&client_secret=" + para_API_secret_key;

           try

           {

               HttpWebRequest getAccessRequest = WebRequest.Create(getAccessUrl) as HttpWebRequest;

               //getAccessRequest.Proxy = null;                 

               getAccessRequest.ContentType = "multipart/form-data"; 

               getAccessRequest.Accept = "*/*";

               getAccessRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";

               getAccessRequest.Timeout = 30000;//30秒连接不成功就中断                  

               getAccessRequest.Method = "post"; 

               HttpWebResponse response = getAccessRequest.GetResponse() as HttpWebResponse;

               using (StreamReader strHttpComback = new StreamReader(response.GetResponseStream(), Encoding.UTF8))

               {

                   access_html = strHttpComback.ReadToEnd();

               }

           }

           catch (WebException ex)

           {

               MessageBox.Show(ex.ToString());

           }

 

           JObject jo = JObject.Parse(access_html);

           access_token = jo["access_token"].ToString();//得到返回的toke             

           return access_token; 

       }

       /// <summary>

       /// 

       /// </summary>

       /// <param name="para_API_id"></param>

       /// <param name="para_API_access_token"></param>

       /// <param name="para_API_language"></param>

       /// <param name="para_API_record"></param>

       /// <param name="para_format"></param>

       /// <param name="para_Hz"></param>

       /// <returns></returns>

       public string getStrText(string para_API_id, string para_API_access_token, string para_API_language, string para_API_record, string para_format, string para_Hz) 

       { 

           //方法参数说明:             

           //para_API_id: API_id (你的ID) 

           //para_API_access_token (getStrAccess(...)方法得到的access_token口令) 

           //para_API_language (你要识别的语言,zh,en,ct) 

           //para_API_record(语音文件的路径) 

           //para_format(语音文件的格式) 

           //para_Hz(语音文件的采样率 16000或者8000) 

              

           //该方法返回值:             

           //该方法执行正确返回值是语音翻译的文本,错误是错误号,可以去看百度语音文档,查看对应错误             

           string strText = null; 

           string error = null; 

           FileInfo fi = new FileInfo(para_API_record); 

           FileStream fs = new FileStream(para_API_record, FileMode.Open); 

           byte[] voice = new byte[fs.Length]; 

           fs.Read(voice, 0, voice.Length); 

           fs.Close(); 

  

           string getTextUrl = "http://vop.baidu.com/server_api?lan=" + para_API_language + "&cuid=" + para_API_id + "&token=" + para_API_access_token; 

           HttpWebRequest getTextRequst = WebRequest.Create(getTextUrl) as HttpWebRequest; 

  

          /* getTextRequst.Proxy = null; 

           getTextRequst.ServicePoint.Expect100Continue = false; 

           getTextRequst.ServicePoint.UseNagleAlgorithm = false; 

           getTextRequst.ServicePoint.ConnectionLimit = 65500; 

           getTextRequst.AllowWriteStreamBuffering = false;*/ 

  

           getTextRequst.ContentType = "audio /"+para_format+";rate="+para_Hz; 

           getTextRequst.ContentLength = fi.Length; 

           getTextRequst.Method = "post"; 

           getTextRequst.Accept = "*/*"; 

           getTextRequst.KeepAlive = true;

           getTextRequst.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"; 

           getTextRequst.Timeout = 30000;//30秒连接不成功就中断              

           using (Stream writeStream = getTextRequst.GetRequestStream()) 

           { 

               writeStream.Write(voice, 0, voice.Length); 

           } 

  

           HttpWebResponse getTextResponse = getTextRequst.GetResponse() as HttpWebResponse;        

           using (StreamReader strHttpText = new StreamReader(getTextResponse.GetResponseStream(), Encoding.UTF8)) 

           { 

               strJSON = strHttpText.ReadToEnd(); 

           } 

                

           JObject jsons = JObject.Parse(strJSON);//解析JSON  

               

           if (jsons["err_msg"].Value<string>() == "success.") 

           {                  

                   strText = jsons["result"][0].ToString(); 

                   return strText; 

           } 

           else

           { 

                   error = jsons["err_no"].Value<string>() + jsons["err_msg"].Value<string>(); 

                   return error; 

           } 

              

       }



API请求方式基本说明
&#8226;语音识别接口支持 POST 方式
&#8226;目前 API 仅支持整段语音识别的模式,即需要上传整段语音进行识别
&#8226;语音数据上传方式有两种:隐示发送和显示发送
&#8226;原始语音的录音格式目前只支持评测 8k/16k 采样率 16bit 位深的单声道语音
&#8226;压缩格式支持:pcm(不压缩)、wav、opus、speex、amr、x-flac
&#8226;系统支持语言种类:中文(zh)、粤语(ct)、英文(en)
&#8226;正式地址:http://vop.baidu.com/server_api


C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则