c#使用百度智能云,文字识别、语音识别demo总结

c#调用流程如下

        首先,需要在百度智能云平台领取免费资源,并创建应用,此时会得到AppID,API Key和Secret Key这三个参数,在调用该应用时需要使用这三个参数。

 在VS2019中,选择项目,管理NuGet程序包,搜索并安装Baidu.Ai

在文件开头引用有关内容

图像文字识别简单的代码段

var apiKey = "";
var apiSecretKey = "";
Ocr ocr = new Ocr(apiKey, apiSecretKey) { Timeout = 60000 };
byte[] bt = File.ReadAllBytes(imagePath);
JObject jobject = ocr.GeneralBasic(bt);

 图像分类代码段

var apiKey = "";
var apiSecretKey = "";
ImageClassify cla = new ImageClassify(apiKey, apiSecretKey) { Timeout = 60000 };
byte[] bt = File.ReadAllBytes(imagePath);
JObject jobject = cla.AdvancedGeneral(bt);

语音识别代码段

var data = File.ReadAllBytes(pathname);
var AppID = "";
var apiKey = "";
var apiSecretKey = "";
var language = 1537;    //普通话模型
var options = new Dictionary<string, object>
{
	{"dev_pid", language}
};
Baidu.Aip.Speech.Asr asr = new Baidu.Aip.Speech.Asr(AppID, apiKey, apiSecretKey) { Timeout = 60000};
//JObject Asr.Recognize(byte[] data, string format, int rate, [Dictionary options<string, object> options = null])
var jobject = asr.Recognize(data, "pcm", 16000, options);

语音识别需要注意的地方(参考官方文档):

        1、支持的语音格式:原始 PCM 的录音参数必须符合 16k、8k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)。

        2、目前系统支持的语音时长上限为60s,请不要超过这个长度,否则会返回错误。

dev_pid参数列表:

1537普通话(纯中文识别)语音近场识别模型有标点支持自定义词库
1737英语无标点不支持自定义词库
1637粤语有标点不支持自定义词库
1837四川话有标点不支持自定义词库
1936普通话远场远场模型有标点不支持


针对语音识别的格式限制,需要对现有音频做格式转化。我这里使用ffmpeg工具。

        首先在官网下载exe文件,完成后解压,并放在固定目录下不要再移动。

         打开高级系统设置配置环境变量,将在系统变量找到Path,添加bin文件夹的路径。之后就可以在cmd命令行中直接调用ffmpeg、ffprobe和ffplay。

 ffmpeg命令格式参考官方文档。

        查看音频文件信息的命令如下:

ffprobe -show_data 音频文件

        将MP3格式转化为pcm,16000hz,单通道的命令如下:

ffmpeg -y -i 原始文件.mp3 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 输出文件.pcm

        在音频文件中截取部分,命令如下(-ss为开始时间,-t为持续时间):

ffmpeg -y -i 输入文件.mp3 -ss 00:00:00 -t 00:01:00 输出文件.mp3

 


在c#中调用命令行执行ffmpeg工具

Process CmdProcess = new Process();
CmdProcess.StartInfo.UseShellExecute = false;
CmdProcess.StartInfo.RedirectStandardInput = true;
CmdProcess.StartInfo.RedirectStandardOutput = true;
CmdProcess.StartInfo.RedirectStandardError = true;
CmdProcess.StartInfo.CreateNoWindow = true;
CmdProcess.StartInfo.FileName = "cmd.exe";
CmdProcess.Start();//执行  
string order = "";
CmdProcess.StandardInput.WriteLine(order + "&exit"); //向cmd窗口发送输入信息  
CmdProcess.StandardInput.AutoFlush = true;  //提交  
CmdProcess.WaitForExit();//等待程序执行完退出进程  
string result = CmdProcess.StandardOutput.ReadToEnd() + CmdProcess.StandardError.ReadToEnd();//输出 
CmdProcess.Close();//结束 

        最后,只需要简单制作一个界面,将各个功能结合应用起来,就可以了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值