本篇文章給大家分享的是有關(guān)利用c#編寫一個(gè)語音合成功能,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
為冊(cè)亨等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及冊(cè)亨網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、冊(cè)亨網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!開發(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)求,簡化代碼,提高開發(fā)效率。如果不想引用該DLL,可以自己封裝Http請(qǐng)求方法。
C# SDK 現(xiàn)已開源,快速接入文檔參考:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp
3. 調(diào)用API,
這里僅展示通用及高精度識(shí)別示例,特殊場(chǎng)景識(shí)別,詳見官方文檔:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp
////// 語音合成 /// /// 請(qǐng)求相關(guān)參數(shù) /// mp3文件保存路徑 /// 狀態(tài)事件 ///public static bool Synthesis(ReqSynthesis reqItem, string destPath, SynthesisEvent synthesisEvent) { bool callResult = false; try { synthesisEvent("語音合成初始化..."); // 百度應(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 () { {"vol", reqItem.vol}, // { "pit", reqItem.pit}, // {"spd", reqItem.spd}, // 語速 {"per", reqItem.per} // 發(fā)音人,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("語音合成失敗, 錯(cuò)誤碼:[{0}], 原因:{1}", result.ErrorCode, result.ErrorMsg)); } RiverAuth.Instant.EndCallEvent(); } catch (Exception ex) { synthesisEvent("語音合成失敗,原因:" + ex.Message); LogHelper.LogError(ex, "語音合成"); } return callResult; } } /// /// 語音合成請(qǐng)求 /// [Serializable] public class ReqSynthesis { public string tex { get; set; }//合成的文本,使用UTF-8編碼,請(qǐng)注意文本長度必須小于1024字節(jié) 必填項(xiàng) public string cuid { get; set; }// 用戶標(biāo)識(shí),用來區(qū)分用戶,填寫機(jī)器 MAC 地址或 IMEI 碼,長度為60以內(nèi) 否 public int spd { get; set; }//語速,取值0-9,默認(rèn)為5中語速 否 public int pit { get; set; }//音調(diào),取值0-9,默認(rèn)為5中語調(diào) 否 public int vol { get; set; }//音量,取值0-15,默認(rèn)為5中音量 否 public int per { get; set; }//發(fā)音人選擇, 0為女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫,默認(rèn)為普通女 } ////// 語音轉(zhuǎn)文字返回結(jié)果 /// 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 文件
以上就是利用c#編寫一個(gè)語音合成功能,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。