我的目的是讓我的應用程序能夠用不太流行的語言(例如福建話,馬來語等)說話。我目前的做法是使用錄製的MP3。語音文字到語音
我想知道是否有'語音字符到語音'引擎存在.net或任何平臺?
這裏的拼音字符就像紙質詞典中的拼音條目。任何想法?
我的目的是讓我的應用程序能夠用不太流行的語言(例如福建話,馬來語等)說話。我目前的做法是使用錄製的MP3。語音文字到語音
我想知道是否有'語音字符到語音'引擎存在.net或任何平臺?
這裏的拼音字符就像紙質詞典中的拼音條目。任何想法?
這裏是VB.NET代碼:
'create the object. This object will store your phonetic 'characters'
Dim PBuilder As New System.Speech.Synthesis.PromptBuilder
'add your phonetic 'characters' here. Just ignore the first parameter.
'The second parameter is your phonetic 'characters'
PBuilder.AppendTextWithPronunciation("test", "riːdɪŋ")
'now create a speaker to speak your phonetic 'characters'
Dim SpeechSynthesizer2 As New System.Speech.Synthesis.SpeechSynthesizer
'now actually speaking. It will speak 'reading'
SpeechSynthesizer2.Speak(PBuilder)
這裏是轉換後的C#代碼:
//create the object. This object will store your phonetic 'characters'
System.Speech.Synthesis.PromptBuilder PBuilder = new System.Speech.Synthesis.PromptBuilder();
//add your phonetic 'characters' here. Just ignore the first parameter.
//The second parameter is your phonetic 'characters'
PBuilder.AppendTextWithPronunciation("test", "riːdɪŋ");
//now create a speaker to speak your phonetic 'characters'
System.Speech.Synthesis.SpeechSynthesizer SpeechSynthesizer2 = new System.Speech.Synthesis.SpeechSynthesizer();
//now actually speaking. It will speak 'reading'
SpeechSynthesizer2.Speak(PBuilder);
,這樣tts系統就可以將手機連接在一起並讀出結果波形?這是會做什麼? – Sriram 2011-06-03 14:38:09
@Sriram:只要在那裏放置任何語音「字符」,並且如果該語音「字符」可讀,則系統調用會說出它。詳情請參閱.Net SDK。 – user774411 2011-06-03 15:23:48
你看過System.Speech
命名空間嗎?
特別是System.Speech.Synthesis
和System.Speech.Synthesis.TtsEngine
命名空間。
AFAIK,只支持流行語言,如英語。我的目標是針對不太流行的語言,甚至是新語言。 – Predator 2011-05-25 10:22:28
你需要的是一個大型的詞彙TTS引擎。微軟有一個speech SDK,它允許你在你輸入其他內容時說,還有Windows SAPI(Speech API - 不確定SDK和API是否是相同的東西)。我知道他們確實有男性和女性的英語聲音,但也許不適用於其他語言,如馬來語(目前市場可能還沒有很多)。你可能想看看Festival Project at CMU。他們通常有不同語言的聲音,但一些不太爲人所知的聲音可能不像英語那樣發達。
進一步更新:
檢查MBROLA site出來。這是一個開發多語言大型詞彙TTS引擎的開源項目,它們也有一個馬來語擴展。我不知道它有多好。我嘗試了印地語,並覺得還有很多工作還需要完成。
另外,請查看BabelFish site。他們有很多免費的TTS引擎的鏈接,這些引擎應該對馬來語有一定的支持。
更新3:我不知道這是否會適合你的目的,但如果應用程序必須講出來的文字是低,那麼你可以嘗試concatenative speech synthesis
在limited vocabulary
了。記錄馬來語(或任何其他語言)的句子片段,並將程序輸出傳遞到您自己創建輸出的有限詞彙引擎。一個例子可能是(英文):「是最有價值的球員。」在這裏,「最有價值的球員」成爲一個片段,而「球員X」可以隨意改變。這一點,如果它符合你的目的,應該運作良好。
也許這樣? System.Speech.Recognition.SrgsGrammar.SrgsPhoneticAlphabet
.Net System.Speech.Synthesis.PromptBuilder
類將從SSML字符串創建音頻。您可以使用這些來構建來自原始音素和採樣音頻的聲音。音頻不是語言相關的。
我已經嘗試了System.Speech.Synthesis.PromptBuilder。而且我不得不說目前語音字符的實現是非常基本的並且不準確。例如,PromptBuilder缺乏語音語調,並且缺乏強調單詞的強調。 PromptBuilder只能夠輸出單調和機器人的聲音,這是非常煩人的。
我的建議是繼續使用您目前的方法。用時間來表達語音的完美語音特徵所需的時間方面,使用mp3傳遞信息更爲自然和經濟高效。
好吧,這種方法可能無法很好地發揮作用的是,語言比一系列「預先錄製」的聲音複雜得多。例如,像中國語氣這樣的語言真的很吸引人。 – 2012-12-04 18:13:34