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

最新文章

  1. OpenCASCADE Gauss Integration
  2. Mybatis中的in查询和foreach标签
  3. Convert Sorted List to Balanced BST
  4. Java Hour 37 Weather ( 10 )
  5. SSM框架搭建
  6. Berkeley 四种产品如何选择?
  7. Android常用系统广播
  8. CSS3之渐变效果
  9. Mybatis分页插件PageHelper正确的用法(网上有2篇不够科学的文章)
  10. JavaEE Tutorials (14) - 用实体图创建获取计划
  11. 错误: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined symbol: PC
  12. amd和cmd区别
  13. 使用NPOI读取Excel数据到DataTable
  14. 洛谷P1032 字串变换-题解
  15. sql查询重复值
  16. CListCtrl颜色设置
  17. Windows环境selenium+Python环境配置
  18. x230安装黑苹果
  19. 遍历DOM树,过滤节点
  20. iphone弹出窗口效果的制作(Core animation, CALayer)

热门文章

  1. [原]常用sqlserver数据库使用sql语句
  2. 详细介绍windows下使用python pylot进行网站压力测试
  3. dsoframer控件学习小结(打开WORD,EXCEL等文件)
  4. python 跳出嵌套循环方法
  5. 使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果
  6. 验证 Xcode 是否来自正规渠道
  7. Java数组,去掉重复值、增加、删除数组元素
  8. 译:用InnoSetup模块化安装依赖项
  9. 转载 jQuery的三种$()
  10. 当碰到unix纪元问题时strtotime怎么转时间戳(DateTime类的使用方法)