2010-08-26 161 views
4

我正在玩Android TTS引擎。我試圖用西班牙語從墨西哥發言,而不是從西班牙發言。Android TTS語言

我嘗試過幾種組合的語言代碼/國家代碼,但是我一直沒能從西班牙獲得西班牙語的任何東西。這裏是我的代碼目前

loc = new Locale("es", "MEX"); 
myTts.setLanguage(loc); 
say("Hello"); 

我也試過( 「ES」, 「US」),( 「ES」, 「LA」),( 「水療」, 「US」),( 「水療」 ,「MEX」),我可以想到它的每個組合都顯示在日誌中:

TtsEngine :: setLanguage找到匹配語言(Spa)但不匹配國家(MEX)。

裝ES-ES成功

我可以離開我的應用程序,並打開了TTS服務擴展。如果我將語言設置爲西班牙語[西班牙語]或西班牙語 - 拉丁美洲語言。無論哪種方式,當我點擊「聽預覽」時,我會得到預期的「Hola」。但是從我的應用程序中,我得到了「Heyyo」而不是「Hola」。任何人都可以看到我做錯了什麼來設置我的語言?

回答

0

如果需要2個字母或3個字母的國家/地區代碼,這有點令人困惑。 Locale文檔說2字母,因此它將是sp-MX,但TTS doc顯示了一個帶有3個字母代碼的示例,因此spa-MEX將是正確的。

您使用的是什麼設備/ sdk版本?如果兩者都不起作用,可能是因爲您的設備不支持西班牙語 - 墨西哥語。 TTS doc的第一部分顯示如何檢查languge特定資源,如果它們不存在,則下載它們。

+0

我在運行2.2的Nexus One和運行1.6的Mytouch上測試過。該應用程序構建到SDK 1.6版。我只用兩個和三個字母代碼嘗試了相同的結果。 – Tim 2010-08-26 18:59:47

+0

您是否嘗試下載特定於語言的資源? – 2010-08-26 19:39:42

4

我已經使用下面的代碼,它在西班牙語中工作正常。

Locale locSpanish = new Locale("spa", "MEX"); 
tts.setLanguage(locSpanish); 
tts.speak(text, TextToSpeech.QUEUE_ADD, null); 
+0

非常適合我......謝謝 – 2014-10-15 04:57:02

+0

很棒的答案!它也適用於我! – 2017-07-16 12:32:39