我正在尝试为阿拉伯语制作一个 TTS 应用程序,但是每当我想要初始化我的 TTS 时,它总是失败。我不知道我应该做什么来解决它。我尝试在模拟器上输入 TTS 引擎,但它没有向我显示任何内容。所以我不确定问题是来自模拟器还是我的代码。
TTS = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status==TextToSpeech.SUCCESS){
int res = TTS.setLanguage(Locale.forLanguageTag("ar-XA"));
if (res == TextToSpeech.LANG_MISSING_DATA || res == TextToSpeech.LANG_NOT_SUPPORTED){
Log.e("TTS","Language not Supporter");
}
else{
speak.setEnabled(true);
}
}
else{
Log.e("TTS","Init Failed");
}
}
});
最佳答案
这些信息可以帮助您在 Android 模拟器上运行 TTS。
当我第一次尝试您的代码时,我收到 LANG_NOT_SUPPORTED
错误,但很快意识到我的特定模拟器实例没有安装 TTS 引擎。
要使用模拟器安装 TTS 引擎,我必须使用 Google Play 模拟器(只有一小部分 AVD 模拟器有)。从 Android 虚拟设备管理器中,您可以创建虚拟设备
并通过 Play 商店查看(例如在手机下)一些虚拟设备:Pixel 4、Pixel 3a、Pixel 3、Pixel、Nexus 5X、Nexus 5。
然后我使用了带有 API 25 的 Nexus 5。(我已经创建了它。)
模拟器运行后,我可以看到列出的 Play Store
应用程序。像在手机上一样运行 Play 商店应用程序(您必须使用 Google 帐户对自己进行身份验证,就像在手机上一样)。使用搜索栏并搜索“Google 语音服务” - 如果尚未安装,请安装此应用程序。这是一个对我有用的 TTS 引擎示例。由于这是唯一安装的 TTS 引擎,因此也是默认引擎。因此,如果您选择加载其他引擎,那么您就必须选择合适的引擎。 (引擎名称是包名称,例如 com.google.android.tts
。)
然后我运行了您的代码(稍作修改),如下所示。我添加了一些诊断来列出可用的语言和变体。我还在这里查看了可用的语言和区域:https://cloud.google.com/speech-to-text/docs/languages例如,只选择“ar-iq”(但“ar”也有效)。
请注意,您的“ar-XA”是用于语音而不是引擎语言的语言标签。
TTS = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status==TextToSpeech.SUCCESS){
Set<Locale> avail = TTS.getAvailableLanguages();
for (Locale locale : avail) {
Log.e(TAG,"local: "+locale);
if (locale.getDisplayVariant() != null) {
Log.e(TAG," var: "+locale.getVariant());
}
}
List<TextToSpeech.EngineInfo> engineInfo = TTS.getEngines();
for (TextToSpeech.EngineInfo info : engineInfo) {
Log.e(TAG,"info: "+info);
}
int res = TTS.setLanguage(Locale.forLanguageTag("ar-iq"));
if (res == TextToSpeech.LANG_MISSING_DATA || res == TextToSpeech.LANG_NOT_SUPPORTED){
Log.e("TTS","Language not Supporter");
}
else{
//speak.setEnabled(true);
TTS.speak("اَلْعَرَبِيَّةُ", TextToSpeech.QUEUE_ADD, null);
}
}
else{
Log.e("TTS","Init Failed");
}
}
});
一旦您安装了 TTS 引擎并且您的代码或以上代码可以正常工作 - 我认为您可以使用设置
来安装您的语音数据:
Settings | Speech | Text-to-speech output | (choose Speech Services by Google) and select the gear icon | and select your voice data.
您还可以通过编程方式使用语音数据。
请注意,您可以使用构造函数安装另一个 TTS 引擎(不是默认引擎):
TextToSpeech(Context context, TextToSpeech.OnInitListener listener, String engine)
Google TTS 引擎附带的阿拉伯语语音具有以下语言标签 - 我猜当设置语言时,会使用以下首选语音之一:
ar-xa-x-arz-local
ar-xa-x-arc-local
关于java - 文本转语音 Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68866638/