相关疑难解决方法(0)

如何读取python和ffmpeg或类似的实时麦克风音量

我试图用近乎实时的方式读取Python中USB麦克风音频的音量.

我有件,但无法弄清楚如何把它放在一起.

如果我已经有一个.wav文件,我可以简单地使用wavefile读取它:

from wavefile import WaveReader

with WaveReader("/Users/rmartin/audio.wav") as r:
    for data in r.read_iter(size=512):
        left_channel = data[0]
        volume = np.linalg.norm(left_channel)
        print volume
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想实时处理来自麦克风的音频,而不是文件.

所以我的想法是使用像ffmpeg这样的东西将实时输出PIPE到WaveReader,但我的Byte知识有点缺乏.

import subprocess
import numpy as np

command = ["/usr/local/bin/ffmpeg",
            '-f', 'avfoundation',
            '-i', ':2',
            '-t', '5',
            '-ar', '11025',
            '-ac', '1',
            '-acodec','aac', '-']

pipe = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=10**8)
stdout_data = pipe.stdout.read()
audio_array = np.fromstring(stdout_data, dtype="int16")

print audio_array
Run Code Online (Sandbox Code Playgroud)

这看起来很漂亮,但它没有做太多.它失败并显示[NULL @ 0x7ff640016600]无法为'pipe:'错误找到合适的输出格式.

我认为这是一个相当简单的事情,因为我只需要检查音量的音量.

有人知道如何完成这个吗?FFMPEG不是必需的,但它确实需要在OSX和Linux上运行.

python linux audio ffmpeg numpy

9
推荐指数
2
解决办法
7062
查看次数

标签 统计

audio ×1

ffmpeg ×1

linux ×1

numpy ×1

python ×1