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