我们已经讲了人脸识别(入门+进阶)、图片识别(入门)。下面是链接:

C# 10分钟完成百度人脸识别——入门篇 <https://www.cnblogs.com/xiongze520/p/10387355.html>

C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
<https://www.cnblogs.com/xiongze520/p/10688545.html>

C# 10分钟完成百度图片提取文字(文字识别)——入门篇
<https://www.cnblogs.com/xiongze520/p/11283484.html>

今天我们来盘一盘语音识别与合成。

PS:仅供了解参考,如需进一步了解请继续研究。

我们现在就基于百度Ai开放平台进行语音技术的相关操作,demo使用的是C#控制台应用程序。

前面的套路还是一样的:

 

* 注册百度账号api,创建自己的应用;
* 创建vs控制台应用程序,引入动态链接库;
* 编写代码调试,效果图查看;
*
* 语音识别
* 语音合成
* 实时语音识别
* 音频文件转写
* 语音模型训练
* 总结。
 

1、创建百度AI语音技术应用

  在百度AI开放平台中,登录自己的百度账号,点击“语音识别”服务,选择“创建应用”
,填好应用名称,选择应用类型,填好应用描述,这样就创建好了“语音识别”服务。

具体不废话,不知道的小伙伴可以移步看这里:C# 10分钟完成百度人脸识别——入门篇
<https://www.cnblogs.com/xiongze520/p/10387355.html>。

创建完成后会生成APPID、APP Key、Secret Key,这些是关键内容,后面要用。

 

2、创建VS控制台应用程序,引入动态链接库

首先我们创建一个VS控制台应用程序,这里就不详细说明。

然后引入百度Baidu.AI动态链接库,步骤如下,小编使用2017,所以直接在NuGet中搜索Baidu.AI安装即可。

安装语音识别 C# SDK

C# SDK 现已开源! https://github.com/Baidu-AIP/dotnet-sdk

** 支持平台:.Net Framework 3.5 4.0 4.5, .Net Core 2.0 **

方法一:使用Nuget管理依赖 (推荐)

在NuGet中搜索 Baidu.AI,安装最新版即可。

packet地址 https://www.nuget.org/packages/Baidu.AI/

方法二:下载安装

语音识别 C# SDK目录结构
Baidu.Aip ├── net35 │   ├── AipSdk.dll // 百度AI服务 windows 动态库 │   ├──
AipSdk.xml // 注释文件 │   └── Newtonsoft.Json.dll // 第三方依赖 ├── net40 ├── net45 └──
netstandard2.0 ├── AipSdk.deps.json └── AipSdk.dll
如果需要在 Unity 平台使用,可引用工程源码自行编译。

安装

1.在官方网站 <http://ai.baidu.com/sdk>下载C# SDK压缩工具包。

2.解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引用。

 

3、编写代码调试,效果图查看

  创建一个空文件夹,命名为Image,存一个音频文件,做调试,后面语音合成的文件也在这里。

在Program.cs中编写代码,代码编写如下,可以直接拷贝进行调试。

我们这里只讲述语音识别和语音合成,其他的内容可以在官网进行编写:
https://ai.baidu.com/docs#/ASR-Online-Csharp-SDK/top
<https://ai.baidu.com/docs#/ASR-Online-Csharp-SDK/top>

语音识别:
using System; using System.Collections.Generic; using System.IO; using
System.Linq;using System.Text; using System.Threading.Tasks; namespace Voice {
class Program { static void Main(string[] args) { // 设置APPID/AK/SK var APP_ID =
"16938141"; var API_KEY = "8y2pB5HLrLD5Zu7aaQV3ce0g"; var SECRET_KEY = "
5tDp3opvpIdEnlXBTOWn9W0O7CdhRNYu"; //语音识别 var client = new
Baidu.Aip.Speech.Asr(APP_ID, API_KEY, SECRET_KEY); client.Timeout= 60000; //
修改超时时间 var data = File.ReadAllBytes("E:\\Work
Demo\\语音技术\\Voice\\Voice\\Image\\16k.wav"); // 可选参数 var options = new
Dictionary<string, object> { {"dev_pid", 1536} //语音模型1536代表普通话,其他请查看官方文档 };
client.Timeout= 120000; // 若语音较长,建议设置更大的超时时间. ms var result =
client.Recognize(data,"wav", 16000, options); Console.Write(result); ////语音合成 //
var _ttsClient = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);//
_ttsClient.Timeout = 60000;// 修改超时时间 //// 可选参数 //var option = new
Dictionary<string, object>()// { // {"spd", 5}, // 语速 // {"vol", 7}, // 音量 //
{"per", 4}// 发音人,4:情感度丫丫童声 // }; //var result =
_ttsClient.Synthesis("今天天气不错,适合嗮太阳", option);//if (result.ErrorCode == 0) // 或
result.Success//{ // File.WriteAllBytes("E:\\Work
Demo\\语音技术\\Voice\\Voice\\Image\\aaa.mp3", result.Data);//} } } }
我们查看一下识别出来的语音是什么 

 



 

 这个就是我准备的语音,识别成功。

格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)。推荐pcm 采样率 :16000 固定值。 编码:16bit 位深的单声道。

百度服务端会将非pcm格式,转为pcm格式,因此使用wav、amr会有额外的转换耗时。

* 16k 采样率pcm文件样例下载
<http://speech-doc.gz.bcebos.com/rest-api-asr/public_audio/16k.pcm>
* 16k 采样率wav文件样例下载
<http://speech-doc.gz.bcebos.com/rest-api-asr/public_audio/16k.wav>
* 16k 采样率amr文件样例下载
<http://speech-doc.gz.bcebos.com/rest-api-asr/public_audio/16k-23850.amr>
音频文件格式转换请参见文档【语音识别小工具\音频文件转码】 <http://ai.baidu.com/docs#/ASR-Tool-convert/top>

 更多内容详见官网:https://ai.baidu.com/docs#/ASR-API/top
<https://ai.baidu.com/docs#/ASR-API/top>

 

 

 语音合成:


  合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制

详见官网:https://ai.baidu.com/docs#/TTS-Online-Csharp-SDK/top
<https://ai.baidu.com/docs#/TTS-Online-Csharp-SDK/top>
using System; using System.Collections.Generic; using System.IO; using
System.Linq;using System.Text; using System.Threading.Tasks; namespace Voice {
class Program { static void Main(string[] args) { // 设置APPID/AK/SK var APP_ID =
"16938141"; var API_KEY = "8y2pB5HLrLD5Zu7aaQV3ce0g"; var SECRET_KEY = "
5tDp3opvpIdEnlXBTOWn9W0O7CdhRNYu"; ////语音识别 //var client = new
Baidu.Aip.Speech.Asr(APP_ID, API_KEY, SECRET_KEY);//client.Timeout = 60000; //
修改超时时间//var data = File.ReadAllBytes("E:\\Work
Demo\\语音技术\\Voice\\Voice\\Image\\16k.wav"); //// 可选参数 //var options = new
Dictionary<string, object>// { // {"dev_pid", 1536} //语音模型1536代表普通话,其他请查看官方文档 //
};//client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms //var result =
client.Recognize(data, "wav", 16000, options);//Console.Write(result); //语音合成
var _ttsClient = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
_ttsClient.Timeout= 60000; // 修改超时时间 // 可选参数 var option = new Dictionary<string,
object>() { {"spd", 5}, // 语速 {"vol", 7}, // 音量 {"per", 4} // 发音人,4:情感度丫丫童声 };
var result = _ttsClient.Synthesis("听说关注博主不迷路", option); if (result.ErrorCode ==
0) // 或 result.Success { File.WriteAllBytes("E:\\Work
Demo\\语音技术\\Voice\\Voice\\Image\\aaa.mp3", result.Data); } } } }
运行后查看效果,如下:



 

这样就合成成功了。

 

4、总结

  简单的入门就到这里,后面的实时语音识别、音频文件转写、建立模型进行语音训练就需要靠大家了。

转载请注明出处,谢谢!

原文地址:https://www.cnblogs.com/xiongze520/p/11301882.html
<https://www.cnblogs.com/xiongze520/p/11301882.html>

拜拜,下次再见咯!

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信