2013-08-22 49 views
3

我需要實現一個可以閱讀葡萄牙語文本的應用程序(TTS)。不幸的是,當使用TextToSpeech.setLanguage(Locale loc)方法時,我找不到葡萄牙語。 Locale.返回了葡萄牙語以外的語言數量。文本到語音:葡萄牙語不可用?

那麼,有沒有什麼辦法可以在葡萄牙語中實現TTS?無論如何,我使用的是Android 2.3.3。

請幫忙。

UPDATE

正如一位成員建議,我用的是API

這是代碼

private void speak() 
    { 
     String text = textToSpeech.getText().toString(); 

     Audio audio = Audio.getInstance(); 
     InputStream sound; 
     try { 
      sound = audio.getAudio(text, Language.PORTUGUESE); 
      audio.play(sound); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

我得到了錯誤

08-23 15:00:47.421: W/System.err(728): java.net.UnknownHostException: translate.google.com 
08-23 15:00:47.421: W/System.err(728): at java.net.InetAddress.lookupHostByName(InetAddress.java:506) 
08-23 15:00:47.431: W/System.err(728): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294) 
08-23 15:00:47.431: W/System.err(728): at java.net.InetAddress.getAllByName(InetAddress.java:256) 
08-23 15:00:47.431: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69) 
08-23 15:00:47.431: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) 
08-23 15:00:47.431: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:322) 
08-23 15:00:47.431: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 
08-23 15:00:47.441: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285) 
08-23 15:00:47.441: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267) 
08-23 15:00:47.441: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1018) 
08-23 15:00:47.441: W/System.err(728): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:512) 
08-23 15:00:47.441: W/System.err(728): at com.gtranslate.Audio.getAudio(Audio.java:34) 
08-23 15:00:47.451: W/System.err(728): at com.example.tts.MainActivity.speak(MainActivity.java:70) 
08-23 15:00:47.451: W/System.err(728): at com.example.tts.MainActivity.access$0(MainActivity.java:63) 
08-23 15:00:47.461: W/System.err(728): at com.example.tts.MainActivity$SpeechClass.onClick(MainActivity.java:53) 
08-23 15:00:47.461: W/System.err(728): at android.view.View.performClick(View.java:2485) 
08-23 15:00:47.461: W/System.err(728): at android.view.View$PerformClick.run(View.java:9080) 
08-23 15:00:47.461: W/System.err(728): at android.os.Handler.handleCallback(Handler.java:587) 
08-23 15:00:47.461: W/System.err(728): at android.os.Handler.dispatchMessage(Handler.java:92) 
08-23 15:00:47.461: W/System.err(728): at android.os.Looper.loop(Looper.java:123) 
08-23 15:00:47.471: W/System.err(728): at android.app.ActivityThread.main(ActivityThread.java:3683) 
08-23 15:00:47.471: W/System.err(728): at java.lang.reflect.Method.invokeNative(Native Method) 
08-23 15:00:47.471: W/System.err(728): at java.lang.reflect.Method.invoke(Method.java:507) 
08-23 15:00:47.471: W/System.err(728): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
08-23 15:00:47.471: W/System.err(728): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
08-23 15:00:47.471: W/System.err(728): at dalvik.system.NativeStart.main(Native Method) 

回答

2

如何java-google-translate-text-to-speech?這是一個面向谷歌翻譯的API,揭示了文字說話功能等。它支持Portuguese,並且這樣的代碼段應該做的工作:

Audio audio = Audio.getInstance(); 
InputStream sound = audio.getAudio("portuguese sentence", Language.PORTUGUESE); 
audio.play(sound); 

的缺點是,你必須要在網上的API來工作。

+0

哇,這很酷 –

+0

但有2個庫。哪一個下載?請幫忙 –

+0

好吧,好像你需要兩個才能播放聲音。 – Magnilex

2

你是如何獲得語言環境的?如果您依靠Locale課程中定義的常量,則似乎沒有爲葡萄牙語定義的常量。您應該能夠構建它是這樣的:new Locale("pt")(或new Locale("pt", "pt")new Locale("pt", "br")

如:支持的語言

tts.setLanguage(new Locale("pt")); 

水平可以使用isLanguageAvailable(Locale)進行檢查。

+0

中的問題我現在正在使用電話,所以我進行了CNT檢查。您能否提供足夠的信息讓我知道該語言的語言級別支持? –

+0

這不工作:(語言不支持 –