我需要实现一个可以读取葡萄牙语文本的应用程序(TTS)。不幸的是,当使用TextToSpeech.setLanguage(Locale loc)方法时,我在其中找不到葡萄牙语。 Locale.返回除葡萄牙语以外的其他语言。

那么,有什么方法可以用葡萄牙语实施TTS?无论如何,我正在使用Android 2.3.3。

更新

正如一位成员建议的那样,我使用了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)

最佳答案

java-google-translate-text-to-speech怎么样?它是Google Translate的API,除了其他功能外,还提供了文字朗读功能。它支持Portuguese,并且这样的代码片段应该可以完成工作:

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

缺点是您必须在线才能使用该API。

关于java - 文字转语音:葡萄牙语不可用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18387697/

10-10 04:04