我想在我的应用中实现这种确切的声音。我怎样才能做到这一点。我尝试了文本到语音转换,但效果不佳!?
[请注意:声音不应该被硬编码(否则我将通过原始资产来完成)。令牌号将从服务器端更改。
代码:
public class LauncherActivity extends FragmentActivity implements TextToSpeech.OnInitListener {
private int mStatus;
private TextToSpeech mTTS;
private void init() {
tokenNumber = findViewById(R.id.token_number);
mTTS = new TextToSpeech(this, this);
value = 1;
setHandler();
}
private void setTextSound(String textSound, String val) {
if (mStatus == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.ENGLISH);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Logger.d("Language not supported");
} else {
String freshString = val.replaceAll("[-+.^:,]", "");
mTTS.setPitch(1f);
mTTS.setSpeechRate(0.8f);
char[] ch = freshString.toCharArray();
// Printing array
mTTS.speak(textSound, TextToSpeech.QUEUE_ADD, null, null);
for (char c : ch) {
mTTS.setSpeechRate(0.4f);
mTTS.speak(String.valueOf(c), TextToSpeech.QUEUE_ADD, null, null);
}
}
} else {
Logger.d("Something went wrong. Please try again later");
}
}
[如果可能,建议我不要使用任何库。
setTextSound
方法更改为以下内容>>private void setTextSound(String textSound) {
if (mStatus == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.ENGLISH);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Logger.d("Language not supported");
} else {
String freshString = textSound.replaceAll("[-+.^:,]","");
mTTS.setPitch(1f);
mTTS.setSpeechRate(1f);
char[] ch = freshString.toCharArray();
// Printing array
for (char c : ch) {
mTTS.speak(String.valueOf(c) , TextToSpeech.QUEUE_ADD, null);
}
}
} else {
Logger.d("Something went wrong. Please try again later");
}
}
让我知道是否可行