哈喽 雷迪斯安德 尖头们 嗨起来!
是我勾勾~
本期又来开教程贴啦,这次带来的是新品喔!热乎的C#语音识别极速版调用教程~
语音识别极速版 API
将60秒以内的完整音频文件识别为文字,适用于近场短语音交互,如手机语音搜索、聊天输入等场景。输入完整音频文件,输出识别结果文字。
采用流式多级截断注意力模型SMLTA,专有GPU服务集群,识别响应速度及识别准确率极大提升。按调用量计费,免费赠送5万次调用。详情见产品定价文档。
任意操作系统,任意编程语言,只要可以对百度语音服务器发起http请求的,均可以使用本接口!
那废话不多说啦,直接开始开荒啦!
step 0! 检查权限!
首先打开极速版链接,https://ai.baidu.com/tech/speech/asrpro
如果是新用户的话第一步创建自己的应用喔~
已经创建过应用的各位小主进入自己的应用列表,编辑一下应用,看看极速版是否勾选上啦?
Step 1!获取accesstoken!
万事找入口,ak第一步!
HttpClient client = new HttpClient();
List> paraList = new List>
{
new KeyValuePair("grant_type", "client_credentials"),
new KeyValuePair("client_id", client_id),
new KeyValuePair("client_secret", client_secret)
};
HttpResponseMessage response = client.PostAsync(AKRequestURL, new FormUrlEncodedContent(paraList)).Result;
JObject result = JObject.Parse(response.Content.ReadAsStringAsync().Result);
拿到了鉴权的答复后,记得保存accessToken喔~
Step 2!鉴权确认!
这次的鉴权比较特别喔,建议各位多做几次权限确认工作呢~
因为 scope中含有audio_voice_assistant_get 表示有语音识别能力,没有该audio_tts_post 的token调用识别接口会有3302错误。
List scopeList = result["scope"].ToString().Split(' ').ToList();
//语音识别权限判定 Check your Asr
if (!scopeList.Contains("audio_voice_assistant_get"))
{
throw new Exception("该AccessToken不具备语音识别权限。请至应用列表修改权限");
}
//语音合成权限判定 Check your Tts
if (!scopeList.Contains("audio_tts_post"))
{
throw new Exception("没有该audio_tts_post 的token调用识别接口会有3302错误");
}
//通过权限判定 pass the check
accessToken = result["access_token"].ToString();
Step 3!读入PCM文件!
ak第一步!IO不过三!来!
byte[] pcmFile = File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "16k.pcm");
Step 4!是时候抉择了!
这次的调用接口支持两种调用
一种是基于json的封装调用,要求将字节流进行base64编码。带来的负面影响是,数据量将扩充三分之一,但开发效率高。
另一种是基于Raw方式提交的Http请求,该请求对请求包的头(header)和身(body)进行分别管理,开发有一定门槛。
这边勾勾我把两种方式都写好啦,各位尽情使用吧~
注意喔,json方式如果用HttpClient的话一定要参照我这样进行content转化喔,像上方获取ak的时候的form转化会导致URL超长呢~
//JSON方式上传 base64编码后,数据会增大1/3
client = new HttpClient();
string base64 = Convert.ToBase64String(pcmFile);
JObject json = new JObject();
json["format"] = "pcm";
json["rate"] = 16000;
json["channel"] = 1;
json["cuid"] = GetMacAddress();
json["token"] = accessToken;
json["len"] = pcmFile.Length;
json["speech"] = base64;
json["dev_pid"] = 80001;
var content = new StringContent(json.ToString(), Encoding.UTF8, "application/json");
response = client.PostAsync(AsrInterfaceURL, content).Result;
result = JObject.Parse(response.Content.ReadAsStringAsync().Result);
Raw:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AsrInterfaceURL + $"?dev_pid=80001&cuid={GetMacAddress().Replace(":","")}&token={accessToken}");
request.ContentType = "audio/pcm;rate=16000";
request.Method = "POST";
using (Stream str = request.GetRequestStream())
{
str.Write(pcmFile, 0, pcmFile.Length);
}
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
Stream receiveStream = resp.GetResponseStream();
string res = new StreamReader(receiveStream).ReadToEnd();
return;
当当!
祝小主们看了本攻略可在5分钟内顺利调通无bug!
本demo项目基于.net 4.5. 依赖newtonsoft.json
项目地址:https://gitee.com/Jack.Zhou/Baidu.FastASR
第一输入网址 t l 5 2 2 1 1 . C 0 M
第二步、点击主页右上角的“注册”填写一个你想要的账号。l j s 1 9 9 4 0 0 vi vi x x
第三步、在弹出的注册窗口中,填写手机号码、验证春码和密码等信息,
然后勾选用户协议,点击“注册”账号。页面会提示注册成功或账号已存在,别人注册过的,同一个账号永久不会重复的。
第四步、系统会向手机发送一条验证码如信,输入验证码后,点击“确认”按钮,表示注册好了。
兄弟们,有产品的相关资料链接吗
帮助很大
太厉害了
哇
我卡在了第一步,是直接C#控制台复制调研Access_token的函数,对应输入AK和SK,他说我
CS5001 程序不包含适合于入口点的静态 "Main" 方法
期待你的研究成果~
感谢大神分享,最近正在研究
期待读后感
明天提交800字观后感哈哈
可以进行代码的学习了,感谢分享
能够破解万种语言,方便了解
所以需要一种万能语言
想法很美好,现实很残酷。混合开发可以了解一下~
能在不同程序语言之间自动翻译,这样就不用什么语言都懂了
可能要表达的意思是看不懂
什么?
还缺个程序语言的翻译
解析返回的json
识别结果怎么看呢?