【问题标题】:Is the Google TTS Engine on all Android Phones, and where can I get it?谷歌 TTS 引擎是否适用于所有 Android 手机,我在哪里可以获得它?
【发布时间】:2013-06-04 06:02:27
【问题描述】:

我想了解我的 Android 手机附带的 Google TTS 引擎是否在所有支持它的 Android 手机上都安装为出厂默认设置?我不确定要参考什么样的参考来解决这个问题,所以我的计划是去零售商软银问问。不过,我觉得这是一个他们无法回答的问题。

有人告诉我,Galaxies 不附带 Google TTS,特别是;所以,任何拥有 Galaxy 的人至少可以让我明白这一点......

我也想知道,我怎样才能获得 Google TTS 引擎的打包版本?我无法在 Play 商店中找到它。我可以通过查看许可证找到最好的东西(那些可爱的小东西总是有开发者的名字和网站)。所以,它是 HTS 引擎,使用 HMM,对吗?但我无法在他们的网站上找到适用于 Android 的软件包。我的下一步是联系开发人员,我目前正在对我翻译的电子邮件进行校对(希望我能找到自己的答案并将其发布)。

任何信息将不胜感激。

【问题讨论】:

  • 您可以通过程序检查,如果引擎不存在则安装。
  • 为什么需要它?它不是单独分发的,可能取决于一些专有数据和/或网络服务。如果您想将它用于您的设备,您可能需要从 Google 获得许可。无论如何,不​​完全是一个编程问题。
  • @HoanNguyen 但我不知道从哪里获得二进制文件。
  • @NikolayElenkov 该许可证是开源的,不归 Google 所有。我构建的应用程序依赖于它——我为什么需要它。
  • 如果您构建的应用程序依赖于特定的 TTS 实现,那么您做错了 :) 您怎么知道它是开源的?如果名称中有“Google”,他们可能已经对其进行了一些修改。

标签: android installation text-to-speech


【解决方案1】:

我认为接受的答案并不正确。此代码不检查是否安装了 google TTS 引擎。它只是启动一个意图,即 TTS 引擎通常会响应询问是否安装了 TTS 数据。

如果没有安装 TTS 引擎,您可能会收到由 ActivityNotFoundException 类型的异常导致的 FC。如果您有其他 TTS 引擎(如 pico),它将响应并检查其数据。如果您有多个 TTS 引擎,它会询问您希望 Intent 使用哪个 TTS 引擎。

您应该改为在包管理器中检查包名称。此代码检查 SVOX Pico TTS:

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    if(isPackageInstalled(getPackageManager(), "com.svox.pico")){
        ttsInstalled = true; // This would be good to have it as a static member
    }
}


public static boolean isPackageInstalled(PackageManager pm, String packageName) {
        try {
            pm.getPackageInfo(packageName, 0);
        } catch (NameNotFoundException e) {
            return false;
        }
        return true;
}

【讨论】:

  • FC 引起的完全正确。
【解决方案2】:

此代码将检查是否安装了 TextToSpeech,如果没有安装到谷歌商店下载

Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
ArrayList<String> languages = new ArrayList<String>();
languages.add("eng-USA"); //$NON-NLS-1$
intent.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR, 
                                                    languages);
startActivityForResult(intent, REQUEST_TTS_DATA_CHECK_CODE);  

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
    super.onActivityResult(requestCode, resultCode, intent);

    switch (requestCode)
    {
        case REQUEST_TTS_DATA_CHECK_CODE:
            if (resultCode != TextToSpeech.Engine.CHECK_VOICE_DATA_PASS)
            {
                // show Alert Dialog to ask user go to play store to install
                // When user click OK this is the code to set
                intent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(intent);
            }
            break;

}

【讨论】:

    【解决方案3】:

    Google TTS 是由 Google 开发的专有软件包,自 ICS[需要引用] 以来,大多数设备(尤其是 Nexus 设备)都可以使用。它是 Google 开发的应用程序的一部分,这些应用程序包括 Google Play 商店、Google 地图、Google+、Gmail、YouTube、Google 搜索、Google Play 音乐、Google Play 图书等。并非所有这些都可以从 Play 商店下载。

    据我所知,除非 Google 决定以某种方式将其开源并公开可用,否则您将无法拥有它。正如您已经提到的,Google TTS 使用 HTS 补丁(本身不是引擎)用于 HTK(我也从许可证页面知道这一点),该补丁是在修改后的 BSD 许可证下发布的。也就是说,您可能永远无法获得引擎的副本。

    如果你想开发TTS引擎,我建议你看看PICO TTS引擎,源代码在AOSP repository

    【讨论】:

    • 感谢 AOSP。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多