私はにほぼリアルタイムでという音量で、読み込みしようとしています。リアルタイムのマイクロフォンの音量をPythonやffmpegなどで読み取る方法
私はこの作品を持っていますが、一緒に置く方法を理解することはできません。
私はすでに私はかなり単純wavefile使用してそれを読むことができ、.wavファイルがある場合:これは素晴らしい作品が、私はリアルタイムでマイクからの音声を処理したい
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
を、ファイルからではありません。
私の考えは、リアルタイム出力をWaveReaderにPIPEするのにffmpegのようなものを使用することでしたが、私のバイト知識はいくらか欠けています。
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
これはかなり見えますが、あまり効果がありません。 [NULL @ 0x7ff640016600] 'pipe:'の適切な出力形式が見つかりませんエラーです。
音量を確認する必要があることを考えると、これはかなり簡単なことです。
誰でもこれを簡単に行う方法は分かりますか? FFMPEGは必須ではありませんが、OSX & Linuxで動作する必要があります。
私は[pyaudio]使用していた作業(https://people.csail.mit.edu/hubert/pyaudio/)。 [pypi](https://pypi.python.org/pypi/PyAudio)で利用できます。 –
WAVへの配管の場合、 '-acodec aac'をドロップし、' -'の前に '-f wav'を挿入してください。 – Mulvya
[sounddevice](http://python-sounddevice.readthedocs.io/)モジュールを使用できます。 [リアルタイムでマイク信号をプロットする例](http://python-sounddevice.readthedocs.io/en/latest/examples.html#plot-microphone-signal-s-in-real-time)があります。プロットの代わりにサウンドレベルを計算するために簡単に変更することができます。 – Matthias