之前用WinForm實(shí)現(xiàn)tts已經(jīng)成功,就調(diào)用了下系統(tǒng)的類庫(kù)。但我把相同的代碼搬到asp.net上時(shí)卻碰到了許多問題,查了好多網(wǎng)站、試過了很多方法,到現(xiàn)在算是做出了一部分吧。
之前調(diào)用微軟的TTS是用的這個(gè)代碼
1 SpeechSynthesizer speech = new SpeechSynthesizer();2 public void Speak(string text, int rate)3 {4 speech.Rate = rate;5 speech.Speak(text);6 speech.Dispose();7 }在網(wǎng)頁(yè)上,我把這個(gè)方法賦給了button的click事件。按第一次是有聲音的,但聲音播放完后后網(wǎng)頁(yè)卻仍在不停的載入,再按button也沒反應(yīng)了。跟著調(diào)試過了一遍,也發(fā)現(xiàn)事件明明都結(jié)束了。感覺很凌亂,然后想用Ajax讓它后臺(tái)自己執(zhí)行并生成音頻文件,第一次點(diǎn)擊按鈕時(shí)生成很順利,但點(diǎn)擊第二時(shí)就出現(xiàn)問題了,它過了好久才生成出來,就像卡住了,一小伙伴也遇到了同樣的問題。先上Ajax代碼:
1 <script type="text/javascript"> 2 $(document).ready(function() { 3 $("#bt_read").click(function () { 4 var url = window.location.href + "/TextSpeak"; 5 $.ajax({ 6 type: "POST", 7 url: url, 8 data: "{'text':'hello'}", 9 contentType: "application/json;charset=utf-8",10 dataType: "json",11 error: function() {12 alert("error");13 }14 });15 });16 })17 </script>
這是后臺(tái)的代碼:
1 [WebMethod]2 public static void TextSpeak(string text)3 {4 TextToSpeak ttSpeak = new TextToSpeak();5 string x = DateTime.Now.ToString("yyyyMMddHHmmss");6 ttSpeak.SaveWaveFile("d:/" + x + ".wav", text, 1, "male");7 }(類TextToSpeak的代碼在上一篇里)
希望有大神能看到幫我解決這個(gè)問題(若大神看不到,就只能自己慢慢糾結(jié)了>_<)-----如果想看解決方法的小伙伴,可以忽略上面的代碼。。
嘗試了好多方法,就這個(gè)能行(還要添加一個(gè)DotNetSpeech.dll類庫(kù)):
/// <summary> /// 網(wǎng)頁(yè)上使用TTS /// </summary> /// <param name="path">路徑</param> /// <param name="text">文本</param> /// <param name="rate">語速</param> /// <param name="gender">性別</param> public void SaveWaveFile(string path,string text,int rate,string gender) { Type type = Type.GetTypeFrom為啥我沒寫speak的方法呢。。要在網(wǎng)頁(yè)客戶端上播放音頻,讓服務(wù)器speak有啥用。服務(wù)器喊啞了,客戶端也是聽不到的哦~~只能生成音頻文件傳到網(wǎng)頁(yè)上用插件播放。為啥我說是半成品呢,因?yàn)槲以囘^很多方法了,總找不到合適的插件解決播放的問題.
突然才發(fā)現(xiàn)原來它可以直接生成.MP3,網(wǎng)上都說要生成wav格式的,自己也沒試試,直到看到小伙伴直接把路徑寫成*.MP3,并且能生成出來才知道原來是可以直接輸出MP3哇。。那這樣問題就不大了,找個(gè)插件把路徑附進(jìn)去就行啦~~
插件要滿足這兩個(gè)條件:
1.能動(dòng)態(tài)添加鏈接。
2.能播放.wav格式。
我試過用自定義控件編寫的mediaPlayer插件來播放 參考:http://m.survivalescaperooms.com/insus/archive/2009/05/03/1448097.html
其實(shí)這個(gè)能把問題都解決了。。就是只有在ie上有效果,其他瀏覽器上都不行。。看了網(wǎng)頁(yè)代碼,音頻鏈接都讀取到了但就是不能播放~~
還有一個(gè)結(jié)果方法,就是讓swf播放器能播放tts生成的wav文件,或者把wav轉(zhuǎn)換成MP3。。這個(gè)我還沒能實(shí)現(xiàn)。
先到這了,我還在慢慢調(diào)試,等搞出來了,立馬發(fā)出來。。也希望有大神幫我解決下哇~~
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注