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