文字转语:葡萄牙语不可用?

时间:2013-08-22 18:01:50

标签: java android eclipse text-to-speech

我需要实现一个可以用葡萄牙语阅读文本的应用程序(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)

4 个答案:

答案 0 :(得分:2)

java-google-translate-text-to-speech怎么样?它是针对Google翻译的API,其中包括Text To Speak功能。它支持Portuguese,像这样的代码片段可以完成工作:

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

缺点是您必须联机才能使API正常运行。

答案 1 :(得分:2)

您是如何尝试获取区域设置的?如果您依赖于Locale类中定义的常量,似乎没有为葡萄牙语定义的常量。您应该能够构建类似于:new Locale("pt")(或new Locale("pt", "pt")new Locale("pt", "br")

的内容

如:

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

可以使用isLanguageAvailable(Locale)检查语言支持级别。

答案 2 :(得分:0)

也许你没有安装所需的语言。

尝试安装Google TTS:https://play.google.com/store/apps/details?id=com.google.android.tts&hl=en,然后在您的设备配置中选择它。

答案 3 :(得分:0)

尝试一下:

Locale locale = new Locale("pt", "br");
tts.setLanguage(locale);

对我有用!