我們已經講了人臉識別(入門+進階)、圖片識別(入門)。下麵是鏈接: C# 10分鐘完成百度人臉識別——入門篇 C# 30分鐘完成百度人臉識別——進階篇(文末附源碼) C# 10分鐘完成百度圖片提取文字(文字識別)——入門篇 今天我們來盤一盤語音識別與合成。 PS:僅供瞭解參考,如需進一步瞭解請繼續研 ...
我們已經講了人臉識別(入門+進階)、圖片識別(入門)。下麵是鏈接:
C# 10分鐘完成百度人臉識別——入門篇
C# 30分鐘完成百度人臉識別——進階篇(文末附源碼)
C# 10分鐘完成百度圖片提取文字(文字識別)——入門篇
今天我們來盤一盤語音識別與合成。
PS:僅供瞭解參考,如需進一步瞭解請繼續研究。
我們現在就基於百度Ai開放平臺進行語音技術的相關操作,demo使用的是C#控制台應用程式。
前面的套路還是一樣的:
- 註冊百度賬號api,創建自己的應用;
- 創建vs控制台應用程式,引入動態鏈接庫;
- 編寫代碼調試,效果圖查看;
-
- 語音識別
- 語音合成
- 實時語音識別
- 音頻文件轉寫
- 語音模型訓練
- 總結。
1、創建百度AI語音技術應用
在百度AI開放平臺中,登錄自己的百度賬號,點擊“語音識別”服務,選擇“創建應用”,填好應用名稱,選擇應用類型,填好應用描述,這樣就創建好了“語音識別”服務。
具體不廢話,不知道的小伙伴可以移步看這裡:C# 10分鐘完成百度人臉識別——入門篇。
創建完成後會生成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.在官方網站下載C# SDK壓縮工具包。
2.解壓後,將 AipSdk.dll
和 Newtonsoft.Json.dll
中添加為引用。
3、編寫代碼調試,效果圖查看
創建一個空文件夾,命名為Image,存一個音頻文件,做調試,後面語音合成的文件也在這裡。
在Program.cs中編寫代碼,代碼編寫如下,可以直接拷貝進行調試。
我們這裡只講述語音識別和語音合成,其他的內容可以在官網進行編寫: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會有額外的轉換耗時。
音頻文件格式轉換請參見文檔【語音識別小工具\音頻文件轉碼】
更多內容詳見官網:https://ai.baidu.com/docs#/ASR-API/top
語音合成:
合成文本長度必須小於1024位元組,如果本文長度較長,可以採用多次請求的方式。文本長度不可超過限制
詳見官網: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
拜拜,下次再見咯!