四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2513|回复: 1
打印 上一主题 下一主题

百度语音识别(源码)

[复制链接]
  • TA的每日心情
    开心
    2018-7-4 09:03
  • 126

    主题

    439

    帖子

    6750

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6750
    跳转到指定楼层
    楼主
    发表于 2017-1-3 12:39:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    public string API_id = "你的ID";
    public string API_record = null;
    public string API_record_format = null;
    public string API_record_HZ = null;
    public string API_key = "你的KEY";
    public string API_secret_key = "你的SECRRET_KEY";
    public string API_language = null;
    public string API_access_token=null;
    public string strJSON = "";
                
            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;
            }
             
             
             
             
             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;
                serverreq.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;
                    }
                
            }
  • TA的每日心情
    开心
    2018-7-4 09:03
  • 126

    主题

    439

    帖子

    6750

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6750
    沙发
     楼主| 发表于 2017-1-3 12:40:41 | 只看该作者
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-8 04:47 , Processed in 1.078125 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表