你的位置:首页 > ASP.net教程

[ASP.net教程]csharp:百度语音识别


 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 = "k2"; //你的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;       }            }

  参考: http://yuyin.baidu.com/docs/asr/57 

API请求方式基本说明

语音合成接口支持 POST 和 GET两种方式
正式地址:http://tsn.baidu.com/text2audio