pea*_*mak 2 android text-to-speech internationalization machine-translation
我正在学习编写一个旨在对给定字符串执行TTS的应用程序,并尝试了从web修改的示例:
// setup TTS part 1
mTts = new TextToSpeech(Lesson2_dialog_revision_simple.this, this); // TextToSpeech.OnInitListener
speakBtn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
StringTokenizer loveTokens = new StringTokenizer("?? one two? three ",",.");
int i = 0;
loveArray = new String[loveTokens.countTokens()];
while(loveTokens.hasMoreTokens())
{
loveArray[i++] = loveTokens.nextToken();
}
speakText();
}
});
}
// setup TTS part 2
@Override
public void onUtteranceCompleted(String utteranceId)
{
Log.v(TAG, "Get completed message for the utteranceId " + utteranceId);
lastUtterance = Integer.parseInt(utteranceId);
}
// setup TTS part 3
@Override
public void onInit(int status)
{
if(status == TextToSpeech.SUCCESS)
{
int result = mTts.setLanguage(Locale.CHINESE); // <====== set speech location
if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
{
Toast.makeText(Lesson2_dialog_revision_simple.this, "Language is not supported", Toast.LENGTH_LONG).show();
speakBtn.setEnabled(false);
}
else
{
speakBtn.setEnabled(true);
mTts.setOnUtteranceCompletedListener(this);
}
}
}
// setup TTS part 4
private void speakText()
{
lastUtterance++;
if(lastUtterance >= loveArray.length)
{
lastUtterance = 0;
}
Log.v(TAG, "the begin utterance is " + lastUtterance);
for(int i = lastUtterance; i < loveArray.length; i++)
{
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, String.valueOf(i));
mTts.speak(loveArray[i], TextToSpeech.QUEUE_ADD, params);
}
}
Run Code Online (Sandbox Code Playgroud)
如果将int result = mTts.setLanguage(Locale.US); 上面的第3部分设置为美国并且用英语完美地读出"一二三",那么一切都会好的.(在上面的例子中,它会跳过所有的中文单词,只读出一两三个)
但是,如果我通过将语言设置为setLanguage(Locale.CHINESE)来更改字符串以读出中文,它会立即声明"不支持语言".
我想问一下
目前的TTS还不支持中文吗?我甚至更喜欢粤语而不是中文.
当我通过语音输入消息时,手机可以识别广东话(广东话).实际上是否有其他方式来执行TTS,输出是广东话?
谢谢!!
小智 5
1 - 当前版本的Google TTS Engine不支持广东话作为输出.普通话工作正常.
2 - Ekho是支持广东话的TTS引擎.
您可能想试试我开发的与Ekho和Google TTS引擎一起使用的TTS应用程序:Voice Out TTS
据我所知,JAVA中没有特定的区域可以区分广东话或普通话,因为广东话是一种中国方言.JAVA中的Locale仅指文字(简体或繁体).
例如,您可以阅读用繁体中文和粤语或普通话书写的字符串.
| 归档时间: |
|
| 查看次数: |
4056 次 |
| 最近记录: |