我們已經(jīng)講了人臉識別(入門+進(jìn)階)、圖片識別(入門)。下面是鏈接:
C# 10分鐘完成百度人臉識別——入門篇 <https://www.cnblogs.com/xiongze520/p/10387355.html>
C# 30分鐘完成百度人臉識別——進(jìn)階篇(文末附源碼)
<https://www.cnblogs.com/xiongze520/p/10688545.html>
C# 10分鐘完成百度圖片提取文字(文字識別)——入門篇
<https://www.cnblogs.com/xiongze520/p/11283484.html>
今天我們來盤一盤語音識別與合成。
PS:僅供了解參考,如需進(jìn)一步了解請繼續(xù)研究。
我們現(xiàn)在就基于百度Ai開放平臺進(jìn)行語音技術(shù)的相關(guān)操作,demo使用的是C#控制臺應(yīng)用程序。
前面的套路還是一樣的:
?
* 注冊百度賬號api,創(chuàng)建自己的應(yīng)用;
* 創(chuàng)建vs控制臺應(yīng)用程序,引入動態(tài)鏈接庫;
* 編寫代碼調(diào)試,效果圖查看;
*
* 語音識別
* 語音合成
* 實(shí)時(shí)語音識別
* 音頻文件轉(zhuǎn)寫
* 語音模型訓(xùn)練
* 總結(jié)。
?
1、創(chuàng)建百度AI語音技術(shù)應(yīng)用
??在百度AI開放平臺中,登錄自己的百度賬號,點(diǎn)擊“語音識別”服務(wù),選擇“創(chuàng)建應(yīng)用”
,填好應(yīng)用名稱,選擇應(yīng)用類型,填好應(yīng)用描述,這樣就創(chuàng)建好了“語音識別”服務(wù)。
具體不廢話,不知道的小伙伴可以移步看這里:C# 10分鐘完成百度人臉識別——入門篇
<https://www.cnblogs.com/xiongze520/p/10387355.html>。
創(chuàng)建完成后會生成APPID、APP Key、Secret Key,這些是關(guān)鍵內(nèi)容,后面要用。
?
2、創(chuàng)建VS控制臺應(yīng)用程序,引入動態(tài)鏈接庫
首先我們創(chuàng)建一個(gè)VS控制臺應(yīng)用程序,這里就不詳細(xì)說明。
然后引入百度Baidu.AI動態(tài)鏈接庫,步驟如下,小編使用2017,所以直接在NuGet中搜索Baidu.AI安裝即可。
安裝語音識別 C# SDK
C# SDK 現(xiàn)已開源! 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目錄結(jié)構(gòu)
Baidu.Aip ├── net35 │?? ├── AipSdk.dll // 百度AI服務(wù) windows 動態(tài)庫 │?? ├──
AipSdk.xml // 注釋文件 │?? └── Newtonsoft.Json.dll // 第三方依賴 ├── net40 ├── net45 └──
netstandard2.0 ├── AipSdk.deps.json └── AipSdk.dll
如果需要在 Unity 平臺使用,可引用工程源碼自行編譯。
安裝
1.在官方網(wǎng)站 <http://ai.baidu.com/sdk>下載C# SDK壓縮工具包。
2.解壓后,將?AipSdk.dll?和?Newtonsoft.Json.dll?中添加為引用。
?
3、編寫代碼調(diào)試,效果圖查看
創(chuàng)建一個(gè)空文件夾,命名為Image,存一個(gè)音頻文件,做調(diào)試,后面語音合成的文件也在這里。
在Program.cs中編寫代碼,代碼編寫如下,可以直接拷貝進(jìn)行調(diào)試。
我們這里只講述語音識別和語音合成,其他的內(nèi)容可以在官網(wǎng)進(jìn)行編寫:
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) { // 設(shè)置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; //
修改超時(shí)時(shí)間 var data = File.ReadAllBytes("E:\\Work
Demo\\語音技術(shù)\\Voice\\Voice\\Image\\16k.wav"); // 可選參數(shù) var options = new
Dictionary<string, object> { {"dev_pid", 1536} //語音模型1536代表普通話,其他請查看官方文檔 };
client.Timeout= 120000; // 若語音較長,建議設(shè)置更大的超時(shí)時(shí)間. 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;// 修改超時(shí)時(shí)間 //// 可選參數(shù) //var option = new
Dictionary<string, object>()// { // {"spd", 5}, // 語速 // {"vol", 7}, // 音量 //
{"per", 4}// 發(fā)音人,4:情感度丫丫童聲 // }; //var result =
_ttsClient.Synthesis("今天天氣不錯(cuò),適合嗮太陽", option);//if (result.ErrorCode == 0) // 或
result.Success//{ // File.WriteAllBytes("E:\\Work
Demo\\語音技術(shù)\\Voice\\Voice\\Image\\aaa.mp3", result.Data);//} } } }
我們查看一下識別出來的語音是什么?
?
?
?這個(gè)就是我準(zhǔn)備的語音,識別成功。
格式支持:pcm(不壓縮)、wav(不壓縮,pcm編碼)、amr(壓縮格式)。推薦pcm 采樣率 :16000 固定值。 編碼:16bit 位深的單聲道。
百度服務(wù)端會將非pcm格式,轉(zhuǎn)為pcm格式,因此使用wav、amr會有額外的轉(zhuǎn)換耗時(shí)。
* 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>
音頻文件格式轉(zhuǎn)換請參見文檔【語音識別小工具\(yùn)音頻文件轉(zhuǎn)碼】 <http://ai.baidu.com/docs#/ASR-Tool-convert/top>
?更多內(nèi)容詳見官網(wǎng):https://ai.baidu.com/docs#/ASR-API/top
<https://ai.baidu.com/docs#/ASR-API/top>
?
?
?語音合成:
合成文本長度必須小于1024字節(jié),如果本文長度較長,可以采用多次請求的方式。文本長度不可超過限制
詳見官網(wǎng):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) { // 設(shè)置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; //
修改超時(shí)時(shí)間//var data = File.ReadAllBytes("E:\\Work
Demo\\語音技術(shù)\\Voice\\Voice\\Image\\16k.wav"); //// 可選參數(shù) //var options = new
Dictionary<string, object>// { // {"dev_pid", 1536} //語音模型1536代表普通話,其他請查看官方文檔 //
};//client.Timeout = 120000; // 若語音較長,建議設(shè)置更大的超時(shí)時(shí)間. 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; // 修改超時(shí)時(shí)間 // 可選參數(shù) var option = new Dictionary<string,
object>() { {"spd", 5}, // 語速 {"vol", 7}, // 音量 {"per", 4} // 發(fā)音人,4:情感度丫丫童聲 };
var result = _ttsClient.Synthesis("聽說關(guān)注博主不迷路", option); if (result.ErrorCode ==
0) // 或 result.Success { File.WriteAllBytes("E:\\Work
Demo\\語音技術(shù)\\Voice\\Voice\\Image\\aaa.mp3", result.Data); } } } }
運(yùn)行后查看效果,如下:
?
這樣就合成成功了。
?
4、總結(jié)
? 簡單的入門就到這里,后面的實(shí)時(shí)語音識別、音頻文件轉(zhuǎn)寫、建立模型進(jìn)行語音訓(xùn)練就需要靠大家了。
轉(zhuǎn)載請注明出處,謝謝!
原文地址:https://www.cnblogs.com/xiongze520/p/11301882.html
<https://www.cnblogs.com/xiongze520/p/11301882.html>
拜拜,下次再見咯!
?
熱門工具 換一換