pythonオーディオ処理の例を詳しく説明します。
準備:
まず、私たちはimportのいくつかのツールバッグが必要です。一つはpython標準ライブラリのwaveモジュールです。オーディオ処理の操作に使います。もう二つはnumpyとmatplotです。データ処理機能を提供します。
一:ローカルオーディオデータの読み込み
オーディオ処理の第一歩は、コンピュータから「聞こえる」音が必要です。ここでは、python標準ライブラリに搭載されているwaveモジュールを使ってオーディオパラメータを取得します。
(1)waveモジュールの導入
(2)waveの関数openを使ってオーディオファイルを開きます。wave.open関数は二つのパラメータを持っています。最初のfileは必要なファイル名とパスです。文字列で表します。二つ目のmodeは開いているモードで、文字列で表しています('rb'または'wb')
(3)オーディオをオンにした後、getparams()を使用してオーディオの基本的な関連パラメータ(nchannnels:チャネル数を取得し、
sampwidth:量子化ビット数または量子化深さ、frameterate:サンプリング周波数、nframes:サンプリング点数)
(1)オーディオデータ自体を第1ステップで読み続け、文字列形式として保存することができます。
readframe:
音声データを読み出して、一つのパラメータを伝達して読み取りが必要な長さを指定します。(サンプリングポイント単位で)readframesはバイナリデータを返します。Pythonではバイナリデータを文字列で表します。
stredata=f.readframes(nframes)
(2)波形図を描画する必要がある場合は、文字列フォーマットのオーディオデータをintタイプに変換する必要があります。
from buffer:
チャネル数と量子化単位により、読み出したバイナリデータを計算可能な配列に変換します。
froombuffer関数でバイナリを整数配列に変換し、そのパラメータdtypeで変換後のデータフォーマットを指定します。
waveData=np.froombuffer(str Data、dtype=np.int 16)
ここではnumpyによるデータフォーマットの変換が必要です。
(3)領土を正規化する
データを(0,1)の間の小数に変えます。主にデータ処理をしやすくするために、データを0~1の範囲にマッピングして処理します。
waveData=waveData*1.0/(max(abs(waveData)
このステップをオフにしても波形図が描けますので、このステップを使わずに波形図の違いを探してみてください。
(4)画像を描画する
サンプリング点数とサンプリング周波数でサンプリング時間を計算します。
time=np.arange(0,nframes)*(1.0/frameterate)
ここで、pythonのオーディオ処理の例について詳しく説明した文章を紹介します。pythonのオーディオ処理の内容については、以前の文章を検索したり、以下の関連記事を見たりしてください。これからもよろしくお願いします。
まず、私たちはimportのいくつかのツールバッグが必要です。一つはpython標準ライブラリのwaveモジュールです。オーディオ処理の操作に使います。もう二つはnumpyとmatplotです。データ処理機能を提供します。
一:ローカルオーディオデータの読み込み
オーディオ処理の第一歩は、コンピュータから「聞こえる」音が必要です。ここでは、python標準ライブラリに搭載されているwaveモジュールを使ってオーディオパラメータを取得します。
(1)waveモジュールの導入
(2)waveの関数openを使ってオーディオファイルを開きます。wave.open関数は二つのパラメータを持っています。最初のfileは必要なファイル名とパスです。文字列で表します。二つ目のmodeは開いているモードで、文字列で表しています('rb'または'wb')
(3)オーディオをオンにした後、getparams()を使用してオーディオの基本的な関連パラメータ(nchannnels:チャネル数を取得し、
sampwidth:量子化ビット数または量子化深さ、frameterate:サンプリング周波数、nframes:サンプリング点数)
# wave
import wave
#
import matplotlib.pyplot as plt
#
import numpy as np
# ,
import os
# WAV
f = wave.open(r"2.wav",'rb' )
#
params = f.getparams ()
nchannels,sampwidth, framerate, nframes = params [:4]
print(framerate)
一チャンネルのオーディオを読み取り、波形図を描く(共通のオーディオは左右2チャンネル)(1)オーディオデータ自体を第1ステップで読み続け、文字列形式として保存することができます。
readframe:
音声データを読み出して、一つのパラメータを伝達して読み取りが必要な長さを指定します。(サンプリングポイント単位で)readframesはバイナリデータを返します。Pythonではバイナリデータを文字列で表します。
stredata=f.readframes(nframes)
(2)波形図を描画する必要がある場合は、文字列フォーマットのオーディオデータをintタイプに変換する必要があります。
from buffer:
チャネル数と量子化単位により、読み出したバイナリデータを計算可能な配列に変換します。
froombuffer関数でバイナリを整数配列に変換し、そのパラメータdtypeで変換後のデータフォーマットを指定します。
waveData=np.froombuffer(str Data、dtype=np.int 16)
ここではnumpyによるデータフォーマットの変換が必要です。
(3)領土を正規化する
データを(0,1)の間の小数に変えます。主にデータ処理をしやすくするために、データを0~1の範囲にマッピングして処理します。
waveData=waveData*1.0/(max(abs(waveData)
このステップをオフにしても波形図が描けますので、このステップを使わずに波形図の違いを探してみてください。
(4)画像を描画する
サンプリング点数とサンプリング周波数でサンプリング時間を計算します。
time=np.arange(0,nframes)*(1.0/frameterate)
import wave
# wave
import matplotlib.pyplot as plt
#
import numpy as np
#
import os
# ,
f = wave.open(r"di.wav",'rb' )
params = f.getparams ()
nchannels,sampwidth, framerate, nframes = params [:4]
print(framerate)
#
strData = f.readframes(nframes)
# 16
waveData = np.frombuffer(strData,dtype=np.int16)
#
waveData = waveData*1.0/(max(abs(waveData)))
#
time = np.arange(0,nframes)*(1.0 / framerate)
plt.plot(time,waveData)
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
plt.title("Single channel wavedata")
plt.show()
効果図ここで、pythonのオーディオ処理の例について詳しく説明した文章を紹介します。pythonのオーディオ処理の内容については、以前の文章を検索したり、以下の関連記事を見たりしてください。これからもよろしくお願いします。