更新日期:2019年12月30日。
Github源碼:[點我獲取源碼]
Speech語音合成、語音識別簡介
對接百度AI開放平臺,封裝的語音技術接口。
使用Speech
語音合成
設置TOKEN
語音合成需要鑑權認證的通行令牌TOKEN,登錄百度AI開放平臺控制檯,通過新建應用獲取應用的APIKEY和SECRETKEY,在任意初始化位置設置這兩個key:
Speecher.SetAPIKEY("你的應用APIKEY");
Speecher.SetSECRETKEY("你的應用SECRETKEY");
然後在調用語音合成接口前,必須先生成TOKEN(一個TOKEN的有效期是30天,失效後必須重新生成):
Speecher.GenerateTOKEN();
由於上文的生成TOKEN的接口無法跨域,所以在WebGL平臺無效,所以我們只能在外部生成TOKEN再賦值給Speecher:
Speecher.SetTOKEN("外部生成的TOKEN");
自定義合成規則
語音合成可以自定義合成規則,在合成規則內,你可以強制定義任何字的發音,比如如下定義一個合成規則:
//自定義合成規則
SynthesisRule rule = new SynthesisRule();
//定義 大 字的發音爲 xiao ,2 聲
rule.AddCustomTone("大", "xiao", 2);
//定義 小 字的發音爲 da ,4 聲
rule.AddCustomTone("小", "da", 4);
開始合成
設置了TOKEN之後便可以直接合成語音了,調用如下接口:
private IEnumerator Start()
{
Speecher.SetAPIKEY("你的應用APIKEY");
Speecher.SetSECRETKEY("你的應用SECRETKEY");
//等待生成TOKEN完成
yield return Speecher.GenerateTOKEN();
//合成語音,如有自定義合成規則,可以傳入合成規則
Speecher.Synthesis("您好,百度!", SynthesisSucceed, SynthesisFailed);
}
private void SynthesisSucceed(AudioClip clip)
{
//語音合成成功,播放合成結果
Main.m_Audio.PlayMultipleSound(clip);
}
private void SynthesisFailed()
{
GlobalTools.LogWarning("語音合成失敗,請查看控制檯日誌!");
}
語音合成爲異步操作,可以通過yield return語句等待合成完成,以達到同步效果,但必須在協程方法體內:
private IEnumerator Synthesis()
{
//合成語音
yield return Speecher.Synthesis("您好,百度!", SynthesisSucceed, SynthesisFailed);
GlobalTools.LogInfo("語音合成完畢!");
}
編輯器內語音合成
通過如下菜單打開編輯器語音合成測試面板:
在面板輸入你的APIKEY和SECRETKEY,點擊Generate按鈕生成TOKEN,然後輸入待合成的文本,以及選擇一些合成參數,點擊下方的Synthesis按鈕便可以將文本合成爲語音文件。
目前已支持官方更新的所有精品發音人:
語音識別
設置TOKEN
語音識別需要鑑權認證的通行令牌TOKEN,與語音合成共用一個TOKEN。
開始識別
設置了TOKEN之後便可以直接識別語音了,調用如下接口:
IEnumerator RecognitionTest()
{
AudioClip clip = null;
//加載音頻文件
yield return Main.m_Resource.LoadAsset<AudioClip>(new AssetInfo("audio", "Assets/Audio/Test.wav", ""), null, (c) => { clip = c; });
//語音識別
yield return Speecher.Recognition(clip, RecognitionSucceed, RecognitionFailed);
}
private void RecognitionSucceed(string text)
{
//語音識別成功
GlobalTools.LogInfo("語音識別成功:" + text);
}
private void RecognitionFailed()
{
GlobalTools.LogWarning("語音識別失敗,請查看控制檯日誌!");
}