股票场内基金交易,没时间盯盘?
前言
Android 1.6 加入了文字合成语音的功能,但是 Google 提供的语言库不支持中文。本篇文章总结了几个支持中文的语言库。
TextToSpeech
在介绍其他语言库之前,先介绍一下 Android 的文字合成语言的 API。因为即使使用其他的语言库,想要完成文字合成语言依然要使用 Android 的 API。以下代码取自 Android 官方 ApiDemos 中的 TextToSpeechActivity。
1 2 3 4 |
private void initializeEngine() { mTts = new TextToSpeech(this, mInitListener); } |
获取 TextToSpeech 实例
通过 TextToSpeech(Context context, TextToSpeech.OnInitListener listener)
构造函数获取 TextToSpeech 实例。因此要实现 TextToSpeech.OnInitListener 接口,获取实例并作为参数传递给上述构造函数。
实现 TextToSpeech.OnInitListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
private final TextToSpeech.OnInitListener mInitListener = new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { // status can be either TextToSpeech.SUCCESS or TextToSpeech.ERROR. if (status == TextToSpeech.SUCCESS) { // Set preferred language to US english. // Note that a language may not be available, and the result will indicate this. int result = mTts.setLanguage(Locale.CHINESE); // Try this someday for some interesting results. // int result mTts.setLanguage(Locale.FRANCE); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { // Lanuage data is missing or the language is not supported. Log.e(TAG, "Language is not available."); } else { // Check the documentation for other possible result codes. // For example, the language may be available for the locale, // but not for the specified country and variant. // The TTS engine has been successfully initialized. // Allow the user to press the button for the app to speak again. mAgainButton.setEnabled(true); } } else { // Initialization failed. Log.e(TAG, "Could not initialize TextToSpeech."); } } }; |
调用 speak()
获取到 TextToSpeech 的实例后,调用 speak(String text, int queueMode, HashMap<String, String> params)
函数实现文字转换语音。
1 2 3 |
mTts.speak("你好", TextToSpeech.QUEUE_FLUSH, // Drop all pending entries in the playback queue. null); |
销毁
退出时记得清除资源
1 2 3 4 5 6 7 8 9 10 |
@Override public void onDestroy() { // Don't forget to shutdown! if (mTts != null) { mTts.stop(); mTts.shutdown(); } super.onDestroy(); } |
科大讯飞
科大讯飞的语音合成应该是国内比较先进的吧。貌似魅族和小米的系统就集成了科大讯飞的 TTS。这里下载讯飞的 SDK。这里是讯飞的集成文档。
注意:在运行讯飞的 demo 的之前,要把 res->tts 目录下的几个 .jet 文件拷贝到 sample 的 assets->tts 目录下。否则使用离线合成的时候回出现“本地引擎错误 24001” 的提示。
手说 TTS
要想使用手说 TTS 实现语音合成,必须先安装 shoushuoTTS.apk
讯飞和手说 TTS 实现语音合成时都是用的他们自己的 API。下面介绍两个和 Android API 结合实现语音合成的语音库。
Ekho
Ekho 的使用和简单,在这里下载 Ekho 的语音库安装包安装,并在设置中把 Ekho TTs Cantonese 设置为首选引擎。然后利用 TextToSpeech 就可以实现语音合成了。
eyes-free
eyes-free 是在 eSpeak 基础上的一个开源的语音合成库。按照这里的说明编译此库,然后才能使用。
注意:此库里的 TextToSpeech 并不是 Android API 里的 TextToSpeech。而是 eyes-free 库封装的。另外 eyes-free 在 5.0 之上的机器里是无法使用的。测试设备:MX4。
结语
科大讯飞在线合成免费,离线收费;但是效果是最好的,集成比较简单。所以推荐科大讯飞。其他的语音库,需要另外安装 APK,从而安装其对应的语音库数据。其中 eyes-free 和 Ekho 可以集成在应用内,不需要另外安装 APK。但是首次安装时,依然有安装语音库的过程。
想获得去掉 5 元限制的证券账户吗?

如果您想去掉最低交易佣金 5 元限制,使用微信扫描左边小程序二维码,访问微信小程序「优财助手」,点击底部菜单「福利」,阅读文章「通过优财开证券账户无最低交易佣金 5 元限制」,按照文章步骤操作即可获得免 5 元证券账户,股票基金交易手续费率万 2.5。
请注意,一定要按照文章描述严格操作,如错误开户是无法获得免 5 元证券账户的。