【问题标题】:Need some advice for an audio processing app需要一些关于音频处理应用程序的建议
【发布时间】:2020-12-11 19:35:17
【问题描述】:

我想问一些关于实时音频数据处理的建议。 目前,我使用 python 套接字创建了一个简单的服务器和客户端,它们从麦克风发送和接收音频数据,直到我停止它(每个数据包 4096 字节,但可能更多)。

我看到了两种不同的分析:

  • 实时:对每个 X 字节数据包进行分析并在响应中返回结果
  • 在接收到大量字节后(例如每 1 小时),附加这些字节并将它们存储到 DB 中。当麦克风停止时,连接所有之前的块并对其执行一些操作(例如为此录制的会话创建波形图图像)。

对于这种用法,我可以使用哪种自托管数据库?

如何定期连接这些大量数据并将它们添加到数据库中?

仅 6 分钟,我就收到了大约 32MB 的数据。也许我应该在收到每个块后立即将其放入 redis 中,而不是将其保存在 python 对象中。另一种方法是将音频数据序列化为 b64。我只是害怕失去速度,因为我目前正在使用 tcp 发送数据。

感谢您的帮助!

【问题讨论】:

    标签: python real-time audio-streaming audio-processing


    【解决方案1】:

    关于尺寸的问题。有什么理由不压缩音频数据吗?这很容易。 6 分钟的未压缩音频(单声道)为 32 MB 是正常的。您可以存储较小的块和/或将传入的块附加到更大的文件中。看看这个,它可能对你有帮助:

    https://realpython.com/playing-and-recording-sound-python/

    How to join two wav files using python?

    【讨论】:

    • 感谢您的链接。压缩是指 wav 类型的音频文件格式还是 gzip、tar 等?关于第二个链接,我不想处理文件系统中的文件,因为将来我会通过 API 获取它们,我想将它们保存在数据库中
    • 我的意思是像 mp3 ;)。例如,Wav 和 FLAC 是未压缩的,它们占用了大量空间。当我录制现场演出时,有 10-30 GB 的未压缩音频并不少见,而且大小常常被低估。如果高保真不相关(例如语音识别),您可以尝试从 48 或 44.1khz 降低到 16khz。不过保持在 16 位。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多