首先,需要在百度智能云平台领取免费资源,并创建应用,此时会得到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
{
{"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 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 | 普通话远场 | 远场模型 | 有标点 | 不支持 |
首先在官网下载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
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();//结束
最后,只需要简单制作一个界面,将各个功能结合应用起来,就可以了。