【问题标题】:AudioRecord while also playing audio - accessing output playback dataAudioRecord 同时播放音频 - 访问输出播放数据
【发布时间】:2019-04-01 04:30:25
【问题描述】:

我正在使用语音命令的自定义模型在我的应用程序中搞乱 - 我让它可以很好地记录和处理来自 AudioRecord 的输入音频,并通过文本到语音向用户提供反馈。

我遇到的一个问题是,即使在播放音频时,我也希望它能够工作——无论是通过我自己的文本到语音,还是通过在后台播放的其他东西(例如音乐)。我意识到这将是一个不平凡的问题,但如果我能以某种方式访问​​音频输出数据(手机正在播放的内容)并将其与我的麦克风输入数据相匹配,我想我至少可以调整我的模型+改进我的结果。

但是,基于 Android - Can I get the audio data for playback from the audio mixer? ,这听起来是不可能的。

两个问题:

1) 有没有什么方法可以让我通过 android api 访问预期的音频输出/播放数据,或者 android api 为处理这个问题提供的任何选项(音频输出和输入之间的反馈循环)?

2) 除了停止所有其他播放或等待其他播放完成之外 - 还有其他方法可以解决此问题吗?如果用户使用免提电话,我会假设一些呼叫应用程序有办法处理这个问题,我只是想念自己如何去做

谢谢

【问题讨论】:

    标签: android audio audiorecord android-audiorecord voice-recording


    【解决方案1】:

    1 和 2 的答案:你想要AcousticEchoCanceler

    关于为什么“从麦克风输入中删除扬声器音频”输入是一项需要大量信号处理知识的重要任务的简短讲座:这比将扬声器音频稍微移动一点并从中减去它更复杂麦克风输入。事实是,即使离开扬声器,音频的频谱也会发生巨大变化(大多数微型扬声器的 very peaky response 以 3-4KHz 为中心)。音频在返回麦克风之前可能会从多个物体(墙壁等)反弹(multipath interference)。不同的频率分量以不同的、无法预测的方式干扰麦克风,从而极大地改变了音频的频谱。顺便说一句——如果房间里有任何东西移动,比如说,如果你把手靠近电话——一切都会改变。这就是您不想尝试编写自己的回声消除过滤器的原因。 Android 为您提供了一个,因此您可以编写很酷的扬声器应用程序等。

    【讨论】:

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