Pythonでwavファイルを書き出す
PythonでSciPyを使ってwavファイルを書き出してみます。元のデータはnumpy.arrayです。
目次
scipy.io.wavfile.writeメソッド
from scipy.io.wavfile import write
write(filename, rate, data)
変数 |
型 |
内容 |
---|---|---|
filename |
stringまたは開いたファイル |
出力先のファイル。 |
rate |
int |
サンプリング周波数。 |
data |
ndarray |
音声データ。 |
ndarrayのdtypeによって、出力するwavデータのフォーマットが変わります。例えば、int16なら16bitのPCMになります。
wavファイルの書き出し例
GarageBandで作った適当な音声データ(ステレオ)のwavファイルを読み込んで、片側のチャンネルの出力を0にしたwavファイルを作ってみます。
まずは、加工の元になるデータを読み込みます。
>>>from scipy.io.wavfile import read
>>> rate, data = read('test.wav')
/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/site-packages/scipy/io/wavfile.py:273: WavFileWarning: Chunk (non-data) not understood, skipping it. WavFileWarning)
>>> rate
44100
>>> data
array([[ 7812, 7812],
[14819, 14819],
[20809, 20809],
...,
[ 0, 0],
[ 0, 0],
[ 0, 0]], dtype=int16)
警告は無視します。
rateという変数にサンプリング周波数が、dataという変数にデータが読み込まれました。
読み込んだデータは書き込み禁止になっているので、arrayの属性を書き込み可に変更します。それから、2列目の要素の値を全てゼロにします。
>>> data.flags.writeable = True
>>> data[:,1] = 0
>>> data
array([[ 7812, 0],
[14819, 0],
[20809, 0],
...,
[ 0, 0],
[ 0, 0],
[ 0, 0]], dtype=int16)
各行の2列目の要素が、全て0になりました。
このデータをout.wavというファイルに書き出します。
>>> from scipy.io.wavfile import write
>>> write('out.wav', rate, data)
これでout.wavというファイルが出力されます。
このout.wavというファイルをPCで再生すると、左側のスピーカーだけから音声が出力されます。
公開日
広告
Pythonカテゴリの投稿
- PythonからWindows RuntimeのAPIを使ってみる
- Pythonから外部のアプリケーションを実行する
- PythonでApacheのログを読む
- PythonでURLを結合する
- PythonでURLを解析する
- Pythonでtar.gzなファイルを解凍(展開)する
- Pythonでwavファイルを書き出す
- Pythonでwavファイルを読み込む
- Pythonでデータを整形して出力する
- Pythonでハミング窓関数を作る(SciPy編)
- Pythonでブール値を数値に変換する
- Pythonでモジュールをインポートする
- Pythonで数値を比較する
- Pythonで文字の内容から真偽値の判定をする
- Pythonで自前の関数を定義する
- Pythonで論理演算する
- Pythonのprint関数で改行せずに出力する
- Pythonのプログラムを終了する
- Pythonの関数には参照を渡す
- Windows10 バージョン1703 Creators Update にPythonとSphinxをインストール
- Windwos10 バージョン1703 Creators Update にPythonとSphinxをインストール (Anaconda編)
- reStructuredTextの表
- ダウンロードしたファイルのチェックサムをPythonで確認してみた
- 反復処理 (while)
- 反復処理(for)
- 条件分岐
- 自作のモジュールをインポートする