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