アップロードしたデータを読み込み、加工します。
Google Colabの新しいプログラム記入部分を作成し、次のプログラムを貼り付けて実行してください。
from scipy.io import wavfile
from scipy.signal import resample
import numpy as np
from IPython.display import Audio
# 元のWAVファイルを読み込み(アップロード済みであることが前提)
rate, data = wavfile.read(filename)
# モノラルに変換(ステレオなら)
if len(data.shape) > 1:
data = data.mean(axis=1).astype(data.dtype)
# サンプリング周波数を変更
target_rate = 44100
num_samples = int(len(data) * target_rate / rate)
resampled_data = resample(data, num_samples).astype(np.int16)
# 再生(Audioオブジェクトで直接)
print(f"サンプリング周波数:{target_rate}")
Audio(data=resampled_data, rate=target_rate)
確かに、今このプログラムの全てを理解するのは難しいです。
大事なところだけ、説明していきますね。
まずは、このプログラムを実行すると、このようなものが表示されます。
再生ボタンを押すと、音声が流れます。音声を聞いてみましょう。
実は、まだ少ししか変わっていません。
では、プログラムの説明をしましょう。
プログラム 9行目〜11行目
ステレオ(2ch)を、モノラル(1ch)に変換しています。
左右の音の平均値を取ることで、一つの音に変換しています。
プログラム 9行目〜11行目
ここで、サンプリング周波数を設定しています。
44,100が設定されてるっていうことは、サンプリング周波数は変えないで、モノラルに変換しているだけなんですね。
でも、ステレオの2chから、モノラルの1chに変化したことで、データも半分になるんだよね!!
それでは、サンプリング周波数の値を変えて再生してみましょう!!
思い切って、5000にしてみましょうか
上記プログラムの14行目、44100を、5000に変えて実行してください。
サンプリング周波数を小さくすると、音質は低下してしまいますが、その分データのサイズが小さくなるんですよ。
いろんな値で試してみましょう。
数値を大きくしてみたけど、音質が良くなるわけじゃないんですね。
はい、A/D変換の性質上、サンプリング周波数は録音時より高くしても、波形はほとんど変化しないんです。
なので、44100よりも小さい値で試してください。
ただし、小さすぎると音声が再生できないので注意してください。