您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)利用c#編寫(xiě)一個(gè)語(yǔ)音合成功能,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
開(kāi)發(fā)流程如下:
1. 創(chuàng)建百度應(yīng)用:
創(chuàng)建應(yīng)用之后就能看到創(chuàng)建完的應(yīng)用和 API KEY 以及 Secret KEY
2. 引用 Baidu.Aip (SDK)
Baidu.Aip 封閉了文字識(shí)別Ocr API 的Http請(qǐng)求,簡(jiǎn)化代碼,提高開(kāi)發(fā)效率。如果不想引用該DLL,可以自己封裝Http請(qǐng)求方法。
C# SDK 現(xiàn)已開(kāi)源,快速接入文檔參考:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp
3. 調(diào)用API,
這里僅展示通用及高精度識(shí)別示例,特殊場(chǎng)景識(shí)別,詳見(jiàn)官方文檔:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp
/// <summary> /// 語(yǔ)音合成 /// </summary> /// <param name="reqItem">請(qǐng)求相關(guān)參數(shù)</param> /// <param name="destPath">mp3文件保存路徑</param> /// <param name="synthesisEvent">狀態(tài)事件</param> /// <returns></returns> public static bool Synthesis(ReqSynthesis reqItem, string destPath, SynthesisEvent synthesisEvent) { bool callResult = false; try { synthesisEvent("語(yǔ)音合成初始化..."); // 百度應(yīng)用配置 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; // 修改超時(shí)時(shí)間 var option = new Dictionary<string, object>() { {"vol", reqItem.vol}, // { "pit", reqItem.pit}, // {"spd", reqItem.spd}, // 語(yǔ)速 {"per", reqItem.per} // 發(fā)音人,4:情感度丫丫童聲 }; synthesisEvent("開(kāi)始語(yǔ)音合成..."); var result = client.Synthesis(reqItem.tex, option); // 保存文件 if (result.Success) // 或 result.Success { File.WriteAllBytes(destPath, result.Data); synthesisEvent("語(yǔ)音合成返回成功,文件:" + destPath); callResult = true; } else { synthesisEvent(string.Format("語(yǔ)音合成失敗, 錯(cuò)誤碼:[{0}], 原因:{1}", result.ErrorCode, result.ErrorMsg)); } RiverAuth.Instant.EndCallEvent(); } catch (Exception ex) { synthesisEvent("語(yǔ)音合成失敗,原因:" + ex.Message); LogHelper.LogError(ex, "語(yǔ)音合成"); } return callResult; } } /// <summary> /// 語(yǔ)音合成請(qǐng)求 /// </summary> [Serializable] public class ReqSynthesis { public string tex { get; set; }//合成的文本,使用UTF-8編碼,請(qǐng)注意文本長(zhǎng)度必須小于1024字節(jié) 必填項(xiàng) public string cuid { get; set; }// 用戶(hù)唯一標(biāo)識(shí),用來(lái)區(qū)分用戶(hù),填寫(xiě)機(jī)器 MAC 地址或 IMEI 碼,長(zhǎng)度為60以?xún)?nèi) 否 public int spd { get; set; }//語(yǔ)速,取值0-9,默認(rèn)為5中語(yǔ)速 否 public int pit { get; set; }//音調(diào),取值0-9,默認(rèn)為5中語(yǔ)調(diào) 否 public int vol { get; set; }//音量,取值0-15,默認(rèn)為5中音量 否 public int per { get; set; }//發(fā)音人選擇, 0為女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫,默認(rèn)為普通女 } /// <summary> /// 語(yǔ)音轉(zhuǎn)文字返回結(jié)果 /// </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. 語(yǔ)音合成最后保存為 MP3 文件
以上就是利用c#編寫(xiě)一個(gè)語(yǔ)音合成功能,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。