Articles of 文字转语音

即使包不可用,TextToSpeech.setEngineByPackageName()也会返回成功

在通过这个答案设法使TextToSpeech.setEngineByPackageName()工作之后,我现在遇到了“相反”的问题: tts.setEngineByPackageName(“com.ivona.tts.voicebeta.eng.usa.kendra”); 始终返回TextToSpeech.SUCCESS ,即使该设备中根本没有安装该软件包。 由于设备上没有该软件包,TTS会继续使用Android的默认pico ,这是预期的,但我不明白为什么setEngineByPackageName()返回SUCCESS。 怎么会这样?

如何轮询可用的TTS引擎以获取可用的语言,而无需实例化每个语言并使用init

我需要实例化一个TextToSpeech对象并设置一个给定的语言(以编程方式设置并可能有所不同)。 我知道我可以使用setLanguage()但只有在TTS引擎中有特定TextToSpeech实例使用的语言时才能使用。 我知道我可以通过myTTS.isLanguageAvailable()检查语言是否可用,但这只会告诉我当前引擎上是否有该语言可用。 问题是用户可能安装了多个TTS引擎,并且所需语言可能在其中一个中可用,但不在默认语言中。 在这种情况下,我想find引擎,使用它并设置语言。 因此,我需要遍历可用的TTS引擎并“询问”每个引擎是否具有所需的语言。 我试过这个: mUserLocale=new Locale(“it-IT”); //just an example mTextToSpeech=new TextToSpeech(getApplicationContext(), this); if (mTextToSpeech.isLanguageAvailable(mUserLocale)<0) { List engines=mTextToSpeech.getEngines(); int currentmatchquality=-1; String defaultTTSEngine=mTextToSpeech.getDefaultEngine(); mTextToSpeech.shutdown(); mTextToSpeech=null; for (int i=0; icurrentmatchquality) { Log.d(“MainActivity”, “Selecting TTS engine “+engineinfo.name); mTextToSpeech.shutdown(); mTextToSpeech=candidateTTS; mTTSEngine=engineinfo.name; currentmatchquality=matchquality; } else { Log.d(“MainActivity”, ” “+mUserLocale.toString()+” not available on this engine: “+matchquality); } } if […]

Android TTS(文字转语音)没有正确发音单个字母

我想在我的Activity中实现Android的文本到语音技术。 这是一个简单的文字游戏,当用户按下某个按钮时,我希望TTS引擎拼写单个字母。 例如,当用户按下A按钮时,我想听到“A”。 问题是.speak方法只接受String作为输入。 所以,当我告诉TTS引擎我只想要一个单字母字符串时,声音不是字母的发音。 有什么方法可以让它正确地发出单字母字符串吗? 到目前为止,解决方案是使用字符串输入,听起来像字母的单词,例如B的 “bee”, C的 “see”等等。 但是F , H等呢? 还有其他想法吗?

文本到语音不按预期工作

我已经按照几个教程,但我遇到了同样的问题。 首先,这是我的简单代码: import java.util.Locale; import android.app.Activity; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech.OnInitListener; import android.util.Log; public class AchievementsActivity extends Activity implements OnInitListener { TextToSpeech reader; Locale canada; boolean readerInit = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); canada = Locale.ENGLISH; reader = new TextToSpeech(this, this); //speak(); // while (reader.isSpeaking()) […]

Android在BroadcastReceiver中调用TTS

我需要在BroadcastReceiver的子类中调用TTS服务。 当我从OnInitListener实现该类时,它给出了运行时错误。 在BroadcastReceiver中是否有其他方式来实现TTS? 谢谢, 对不起代码: public class TextApp extends BroadcastReceiver implements OnInitListener { private TextToSpeech tts; private String message = “Hello”; @Override public void onReceive(Context context, Intent intent) { tts = new TextToSpeech(context, this); message = “Hello TTS”; } @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { tts.speak(message, TextToSpeech.QUEUE_FLUSH, null); } } […]

为什么UtteranceProgressListener不是一个接口?

我正在玩Android的TTSfunction​​,TextToSpeech类有这个方法设置一个监听器,一旦TextToSpeech完成播放就会收到通知: public int setOnUtteranceCompletedListener(TextToSpeech.OnUtteranceCompletedListener listener) 但是OnUtteranceCompletedListener被定义为public abstract class 。 由于我的MainActivity已经扩展了Activity,因此它也无法扩展OnUtteranceCompletedListener 。 我可以将旧方法与OnUtteranceCompletedListener一起使用,但不推荐使用: public int setOnUtteranceCompletedListener (TextToSpeech.OnUtteranceCompletedListener listener)` 为什么OnUtteranceCompletedListener未定义为public static interface ? 我正在考虑编写自己的UtteranceProgressListenerImpl ,然后只调用MainActivity的onDone方法。 这是正确的方式还是有更好/更清洁的选择? private class UtteranceProgressListenerImpl extends UtteranceProgressListener { private MainActivity mainActivity; UtteranceProgressListenerImpl(MainActivity mA) { mainActivity = mA; } @Override public void onDone(String utteranceId) { mainActivity.onDone(utteranceId); } @Override public void onError(String utteranceId) { /* […]

SpeechToText并运行ACTION_CHECK_TTS_DATA意图

我完全按照本博文中的说明实现了TextToSpeech集成。 在我将它添加到我的程序后,它现在正在干扰我的其他intent 。 例如: 项目清单 用户启动应用 用户调用加载活动 用户选择要加载的文件,活动返回fileanme以加载意图 主要活动开始,并意识到它需要加载一个文件名,所以它开始这样做 需要检查TTS,以便启动ACTION_CHECK_TTS_DATA意图 这会再次暂停主要活动,并且加载过程会中断 当TTS检查返回时,加载从未发生过。 我什么时候需要这个TTS检查? 我可以在应用程序启动时执行一次吗? 它导致我的应用程序加载缓慢。 如果可能的话,我希望在单独的线程中执行此加载。

在Android上使用Text-to-Speech时出现问题isSpeaking()

我遇到了isSpeaking()方法的问题。 将QUEUE_FLUSH传递给speak()方法时, isSpeaking()工作正常。 但是,当我对多个话语进行排队时(通过传递QUEUE_ADD ), isSpeaking()方法在多个话语排队后立即开始返回false 。 然后我偶然发现了TtsService类的源代码并看到了这段代码: public boolean isSpeaking() { return (mSelf.mIsSpeaking && (mSpeechQueue.size() < 1)); } 有谁有任何想法,为什么这种方法以这种方式实施?

Android文字转语音男声

我有一个工作文本到演讲但我想知道,而不是一个女性的声音,当应用程序调用它来播放它会做一个男性的声音而不是?

文本到语音停止问题

我有一个活动,其中屏幕上的显示不断更新以及文本到语音的更新。 这里的问题是当UI正在更新时,如果我按下主页按钮,那么文本到语音也不会停止。 它一直在运行。 我试图在pause()和destroy()写stop()和shutdown() destroy()但仍然无效。 任何人都可以让我知道如何阻止它? 请帮帮我。 非常感谢。