我是一个哑巴;如何使用 TTS 作为语音?

Eza*_*ard 9 sound microphone text-to-speech accessibility espeak

这个问题是关于将音频数据解析为麦克风输入。

我想如何使用这个?

由于我是一个静音者,我希望能够使用 TTS 数据,例如:

espeak-ng "Hello World" --stdout | some-magical-program
Run Code Online (Sandbox Code Playgroud)

允许我使用文本输入来说话,而不需要他们每次都检查文本聊天。

mat*_*igo 3

注意:这是pLumo 链接到的U&L 答案的更新版本。

PulseAudio 可以将音频重定向到应用程序,就像声音来自麦克风一样。幸运的是,这也可以通过 GUI 来完成。

先决条件:

如果您的计算机上尚未安装 PulseAudio Control ( pavucontrol),则需要安装它。可以通过终端来完成,如下所示:

sudo apt install pavucontrol
Run Code Online (Sandbox Code Playgroud)

配置 PulseAudio:

  1. 打开 PulseAudio 控制: 脉冲音频控制

  2. 单击“输入设备”选项卡,然后从底部过滤器中选择“监视器”: 输入设备

  3. 单击“录音”选项卡。您可能会看到该列表是空的: 记录

    现在是我们将音频重定向到应用程序的部分。为此,我们必须有一些正在主动使用麦克风的东西。在本示例中,我将使用在浏览器中执行的视频通话,但这适用于任何可以使用麦克风的应用程序,从 Audacity 到 OBS 到 Zoom。

  4. 从您想要与之通信的应用程序开始呼叫。在此过程中您的麦克风可以静音。

  5. PulseAudio Control 中的“录音”选项卡现在将显示正在使用麦克风的应用程序: 录音活动 注意: “静音”下方的栏现在将移动以指示它正在拾取声音。

  6. 将“来自”选择从当前麦克风更改为“内置模拟立体声监听”。在您的系统上,其名称可能略有不同,但该值将以“Monitor of ...”开头: 录制不同的源

  7. 使用espeak-ng(或任何其他应用程序)发送声音:

    espeak-ng "Here we have a basic message that will be heard locally as well as over the call."
    
    Run Code Online (Sandbox Code Playgroud)

    今天早些时候在通话中确认工作正常。

    如果您使用pico2wave,则需要运行两个命令才能完成此工作:

    pico2wave -w out.wav -l en-US "Here is another basic message that will be heard locally as well as over the call."; aplay out.wav
    
    Run Code Online (Sandbox Code Playgroud)

要知道的事情:

  • 当此机制处于活动状态时,来自计算机的所有声音都会通过呼叫发送,因此呼叫中的人员会响亮而清晰地听到任何通知提示音
  • 在通话过程中使用静音按钮似乎完全符合预期,这可以解决上一点造成的分心问题
  • 运行时,您的硬件麦克风将不会处于活动状态,因此人们不会听到您咳嗽、打字或喝咖啡的声音