【问题标题】:How to write every x seconds a sound into an audio file (e.g. .mp3) in Python?如何在 Python 中每 x 秒将声音写入音频文件(例如 .mp3)?
【发布时间】:2021-04-29 05:29:04
【问题描述】:

有没有办法在 python 的文件(例如 .mp3 或 .wav)中每 2 秒写入一个声音? 例如,如果我有这样的循环

x=0
while x<10:
       #write sound.wav into an audio file (file.mp3)
       time.sleep(2)
       x=x+1

因此,我希望有一个音频文件,您可以在其中每 2 秒听到一次声音(例如 10 次)

提前致谢

【问题讨论】:

  • 自学如何打开并从 wav 文件中读取有效负载,以便您可以遍历有效负载中的每个音频样本...从单声道音频文件开始...随着此循环进行字节按字节理解多字节音频样本的含义,当您的输入 wav 文件的位深度为 16 位(2 个字节)时,您需要将 2 个字节拼接成一个音频样本......绘制这些音频样本,以便您可以看到曲线在零水平上上下摆动...通过将样本值覆盖为零来强制手...在此循环中将样本写入输出文件
  • 这些是必要的初步剧照,可以让您解决您的问题......数字音频有两个基本属性:位深度和采样率......避免使用任何库来解决我的上述步骤,因为如果您自己编写所有这些逻辑,您将学到的不仅仅是调用别人的 api,任何人都可以做......如果您的输入音频是 mp3,首先将其解码为 PCM 格式,这是 wav 的格式,它是数字音频的通用语...玩得开心
  • 非常感谢。这对我帮助很大。我会尝试自学整件事;-)

标签: python python-3.x audio while-loop


【解决方案1】:

它不是那样工作的。如果你sleep(2),Python 解释器只会空闲 2 秒而不做任何事情,即它将暂停任何文件写入并在睡眠结束后恢复。您需要做的是写入声音数据,然后写入两秒钟的静音(零值样本),然后再次写入声音数据等等。

【讨论】:

  • 好的。非常感谢。你能告诉我我怎么能做这样的事情吗?在一个文件中写入多个声音?不幸的是,我在互联网上一无所获。谢谢
  • 嗯,从某种意义上说,你总是会写几个声音,因为你几乎总是会在文件中写几个样本。请尝试搜索“用 Python 读写音频文件”。然后,如果您遇到麻烦,请发布另一个问题。
猜你喜欢
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
相关资源
最近更新 更多