本文主要討論C#開發使用百度語音合成API在線將文本內容合成語音,保存為 MP3 檔案,本文最后會提供本安全源代碼以及運行軟體包,如有需要可自行下載
開發流程如下:
1. 創建百度應用:
創建應用之后就能看到創建完的應用和 API KEY 以及 Secret KEY了,在呼叫API時需傳入這些配置值
詳見:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index
2. 參考 Baidu.Aip (SDK)
Baidu.Aip 封閉了文字識別Ocr API 的Http請求,簡化代碼,提高開發效率,如果不想參考該DLL,可以自己封裝Http請求方法,
C# SDK 現已開源,快速接入檔案參考:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp
3. 呼叫API,
這里僅展示通用及高精度識別示例,特殊場景識別,詳見官方檔案:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp
/// <summary> /// 語音合成 /// </summary> /// <param name="reqItem">請求相關引數</param> /// <param name="destPath">mp3檔案保存路徑</param> /// <param name="synthesisEvent">狀態事件</param> /// <returns></returns> public static bool Synthesis(ReqSynthesis reqItem, string destPath, SynthesisEvent synthesisEvent) { bool callResult = false; try { synthesisEvent("語音合成初始化..."); // 百度應用配置 var apiKey = ConfigUtil.GetConfigStr(EnumConfigKey.SpeechAPI_Key); var secretKey = ConfigUtil.GetConfigStr(EnumConfigKey.SpeechSECRET_KEY); if (!RiverAuth.Instant.CheckSynthesis(apiKey, secretKey)) { return false; } var client = new Baidu.Aip.Speech.Tts(apiKey, secretKey); client.Timeout = 60000; // 修改超時時間 var option = new Dictionary<string, object>() { {"vol", reqItem.vol}, // { "pit", reqItem.pit}, // {"spd", reqItem.spd}, // 語速 {"per", reqItem.per} // 發音人,4:情感度丫丫童聲 }; synthesisEvent("開始語音合成..."); var result = client.Synthesis(reqItem.tex, option); // 保存檔案 if (result.Success) // 或 result.Success { File.WriteAllBytes(destPath, result.Data); synthesisEvent("語音合成回傳成功,檔案:" + destPath); callResult = true; } else { synthesisEvent(string.Format("語音合成失敗, 錯誤碼:[{0}], 原因:{1}", result.ErrorCode, result.ErrorMsg)); } RiverAuth.Instant.EndCallEvent(); } catch (Exception ex) { synthesisEvent("語音合成失敗,原因:" + ex.Message); LogHelper.LogError(ex, "語音合成"); } return callResult; } } /// <summary> /// 語音合成請求 /// </summary> [Serializable] public class ReqSynthesis { public string tex { get; set; }//合成的文本,使用UTF-8編碼,請注意文本長度必須小于1024位元組 必填項 public string cuid { get; set; }// 用戶唯一標識,用來區分用戶,填寫機器 MAC 地址或 IMEI 碼,長度為60以內 否 public int spd { get; set; }//語速,取值0-9,默認為5中語速 否 public int pit { get; set; }//音調,取值0-9,默認為5中語調 否 public int vol { get; set; }//音量,取值0-15,默認為5中音量 否 public int per { get; set; }//發音人選擇, 0為女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫,默認為普通女 } /// <summary> /// 語音轉文字回傳結果 /// </summary> public class RetSpeech { public string corpus_no { get; set; } public string err_msg { get; set; } public int err_no { get; set; } public string[] result { get; set; } public string sn { get; set; } }
4. 語音合成最后保存為 MP3 檔案

5. 源代碼及軟體包下載
軟體開源代碼地址(專案集成文字識別、語音合成、語音識別):https://gitee.com/bidev_admin/river-int-ai.git
運行軟體包下載地址(.Net Framework 4.5): https://pan.baidu.com/s/1z-WFDGHhEP8tqLqwp9I0Mw 提取碼: r3sk
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/234555.html
標籤:WinForm
