0

マイク入力からの周波数スペクトルをリアルタイムで分析および表示するスペクトログラム プログラム (python) を作成しようとしています。ここから音声を録音するためのテンプレート プログラムを使用しています: http://people.csail.mit.edu/hubert/pyaudio/#examples (録音例)

このテンプレート プログラムは問題なく動作しますが、行から返されるデータの形式がわかりませんdata = stream.read(CHUNK)。このプログラムで使用されている .wav 形式について調査しましたが、.wav ファイル内のメタデータの定義だけで、実際のデータ バイト自体の意味を見つけることができません。

このプログラムは 16 ビットのサンプルを使用し、「チャンク」は Python 文字列に格納されていることを理解しています。各サンプルのデータが何を表しているかを正確に理解するのを誰かが助けてくれることを望んでいました. この情報のソースへのリンクだけでも役に立ちます。グーグルで調べてみましたが、正確に検索できるほど用語をよく知っているとは思いません。

4

1 に答える 1

1

stream.readバイナリデータを提供します。10 進数のオーディオ サンプルを取得するには、 を使用numpy.fromstringしてそれを numpy 配列に変換するか、Python の組み込み を使用しstruct.unpackます。

例:

import pyaudio
import numpy
import struct

CHUNK = 128

p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=44100, input=True, frames_per_buffer=CHUNK)

data = stream.read(CHUNK)
print numpy.fromstring(data, numpy.int16) # use external numpy module
print struct.unpack('h'*CHUNK, data) # use built-in struct module

stream.stop_stream()
stream.close()
p.terminate()
于 2014-08-05T07:43:11.043 に答える