【问题标题】:Audio watermarking with Ruby, PHP or Python使用 Ruby、PHP 或 Python 进行音频水印
【发布时间】:2011-10-07 15:47:57
【问题描述】:

我正在做一个项目,我需要对一堆各种格式的音频文件进行后处理。

  • 首先需要将文件转换为.WAV格式。
  • 其次,根据它们的长度,我需要在每个新的 .WAV 文件中以一定的间隔插入一个简短的可听水印。

第一部分很简单,使用 LAME 编码器 cli。 第二部分是困难的地方 - 我已经尝试了一些 LAME 和 FFmpeg 的方法,但似乎无法让它工作。

脚本在后台作为 cron 作业运行,因此可以使用完整的 cli 访问权限。

如果可能的话,如果有人可以向我指出以某种相关方式执行此操作的示例脚本/gem 或类,那就太好了。

【问题讨论】:

  • 这是一个可听见的水印,还是通常不会被检测到的东西?
  • 你说脚本正在运行,这里确实没有问题。这三种语言都支持脱壳/系统调用。你有什么问题?
  • @Brad ,是的,它是一个声音水印文件。当您播放生成的 mp3 时,您应该每隔几秒就能听到一次。
  • @horatio 我已经更新了问题,谢谢!
  • 为什么要让水印被听到?另外,您是否尝试对信息进行编码?

标签: php python ruby audio watermark


【解决方案1】:

这变得很复杂。您需要实际混合音频,据我所知,FFMPEG 无法做到这一点。如果您将 MP3 转换为 WAV 以便您可以使用它,然后将其重新编码回 MP3,您将遇到的另一个问题是质量损失。

我认为您可以为此使用 Sox:http://sox.sourceforge.net/

首先使用 FFMPEG 将音频解码为 WAV,并根据需要调整采样率和位深度。

然后,呼叫soxmixhttp://linux.die.net/man/1/soxmix

【讨论】:

  • 为什么要先用ffmpeg? SoX 可以阅读 mp3。如果这些是待售产品的音频预览,则由于转码而导致的质量损失甚至可能是一项功能。
  • @mkb,我的印象是 SoX 只支持少数几种格式,但现在我发现我的假设不正确:sox.sourceforge.net/soxformat.html
  • 感谢@Brad,这使我得到了以下命令: sox -m -v 0.9 l.wav -v 0.4 2.wav out.wav 这解决了我的问题: )
【解决方案2】:

如果你准备好走 Python 路线,我建议SciPy,它可以将 WAV 文件读入 NumPy 数组:

from scipy.io import wavfile
fs, data = wavfile.read(filename)

official documentation 包含详细信息)。

可以通过NumPy 的数组操作例程方便地操作声音。

scipy.io.wavfile 然后可以将文件写回 WAV 格式。

SciPy 和 NumPy 是通用的科学数据工具。更多music-centric Python modules可以在官网找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2020-09-28
    • 2013-02-04
    • 2011-07-12
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多