【问题标题】:How can I save my android tts output in a wav file?如何将我的 android tts 输出保存在 wav 文件中?
【发布时间】:2012-03-31 14:22:17
【问题描述】:

我几乎到处寻找一种方法来将我的 android tts 输出保存在音频文件中。我看了这些帖子:

但无法找到/理解答案。我正在像这样使用synthesizeToFile()

HashMap<String, String> myHashRender = new HashMap<String, String>();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, result);
String fileName = "/Android/data/com.android.voicelanglearning.vll/ttsfile1.wav";
tts.synthesizeToFile(result, myHashRender, fileName);

所以我重新发布了同样的问题。非常感谢任何帮助。

谢谢你, 穆尼卡

【问题讨论】:

    标签: android text-to-speech


    【解决方案1】:

    重要的方法是synthesizeToFile。它会将音频写入您指定的设备上的文件中。然后您可以使用MediaPlayer 播放该文件,或者您可以使用adb 命令行工具使用命令将其从设备上拉到您的开发系统中

    adb pull <path-to-file>
    

    【讨论】:

    • 感谢您的回复。但是运行 synthesizeToFile() 后我找不到该文件。我得到了 SUCCESS 的输出,但我在它应该保存的目录中看不到该文件。
    • @MounikaNamburu - 我认为问题在于您使用的文件名。您需要写入您的应用程序具有写入权限的文件夹。尝试使用活动的getExternalFilesDir()Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) 返回的文件夹。您还需要在清单中声明 WRITE_EXTERNAL_STORAGE 权限。
    【解决方案2】:

    TextToSpeech.synthesizeToFile() 在真实设备中不起作用。它仅适用于 AVD。

    我也一直在尝试这个,同时使用原始 Pico TTS 引擎和第三方 TTS 引擎,尝试写入 sdcard 或内部存储器(在根设备上):

    context.getDir("soundfiles", Context.MODE_WORLD_WRITEABLE);
    

    但是,正如您所指出的,该方法返回 TextToSpeech.SUCCESS 而没有实际创建文件。

    如果您必须将 TTS 输出录制为 WAV 文件,请将耳机输出连接到 PC 声卡中的辅助输入,然后使用任何录制软件来捕获它。

    【讨论】:

    • TextToSpeech.synthesizeToFile() 在我的设备上工作(Nexus 4 运行 OS 4.2.2)。它将指定的文本合成为 .wav 文件到我的应用程序的 /sdcard/Android/data/ 目录。
    【解决方案3】:

    它可能不是在真实设备上不起作用。问题可能是您正在使用 USB 电缆以调试模式插入计算机来测试真实设备。这可能会禁止将文件保存到手机。

    Environment.getExternalStorageDirectory()

    返回主要的外部存储目录。如果该目录已被用户安装在他们的计算机上、已从设备中删除或发生了其他问题,则该目录当前可能无法访问。您可以使用 getExternalStorageState() 确定其当前状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多