ホームページ > バックエンド開発 > Python チュートリアル > Python オーディオ処理ライブラリの使用ガイド

Python オーディオ処理ライブラリの使用ガイド

WBOY
リリース: 2024-01-22 11:30:07
オリジナル
1192 人が閲覧しました

Python オーディオ処理ライブラリの使用ガイド

オーディオ処理はマルチメディア分野の重要な分野であり、音楽業界に加えて、人工知能、人間とコンピューターのインタラクションなどの分野でも不可欠なスキルです。 Python では、音声処理ライブラリが比較的一般的に使用されており、音声の収集、処理、分析に役立ちます。この記事では、よく使われる Python オーディオ処理ライブラリとその使用方法を紹介します。

1. PyAudio

PyAudio は、Python でオーディオの収集や再生などの機能を実装するのに役立つ Python モジュールです。複数のオペレーティング システムをサポートしており、Windows システムだけでなく、Linux や Mac OS X でも使用できます。 PyAudio を使用すると、オーディオ ファイルの読み取りと書き込みだけでなく、リアルタイムでのオーディオの録音と再生も簡単に行うことができます。

PyAudio のインストールは非常に簡単です。pip コマンドを使用してインストールするだけです:

pip install pyaudio
ログイン後にコピー

次は、PyAudio を使用してオーディオ ファイルを読み取る方法を示す簡単な例です:

import pyaudio
import wave

# 打开 wav 文件
wave_file = wave.open('test.wav', 'rb')

# 初始化 PyAudio
p = pyaudio.PyAudio()

# 打开音频流
stream = p.open(format=p.get_format_from_width(wave_file.getsampwidth()),
                channels=wave_file.getnchannels(),
                rate=wave_file.getframerate(),
                output=True)

# 读取数据并播放
data = wave_file.readframes(1024)
while data != b'':
    stream.write(data)
    data = wave_file.readframes(1024)

# 停止音频流和 PyAudio
stream.stop_stream()
stream.close()
p.terminate()

# 关闭 wav 文件
wave_file.close()
ログイン後にコピー

上記のコードは、最初に wave モジュールを使用してオーディオ ファイルを開き、次に PyAudio モジュールを使用してオーディオ ストリームを開き、オーディオ ファイル内のデータを読み取り、オーディオ ストリームに書き込みます。最後に、オーディオの再生が完了したら、オーディオ ストリームと PyAudio を閉じます。

2. SciPy

SciPy は科学計算用の Python ライブラリであり、信号処理、画像処理、最適化などのさまざまな科学アプリケーションをサポートしています。オーディオ処理では、通常、SciPy の信号モジュールを使用して、フィルタリングなどの信号処理操作を実行します。

SciPy のインストールも非常に簡単です。インストールするには pip コマンドを使用するだけです:

pip install scipy
ログイン後にコピー

次は、SciPy を使用してオーディオ データをフィルタリングする方法を示す簡単な例です。

import scipy.signal as signal
import scipy.io.wavfile as wav

# 读取音频文件
rate, data = wav.read("test.wav")

# 构造滤波器
nyq_rate = rate / 2.0
cutoff_freq = 2000.0
normal_cutoff = cutoff_freq / nyq_rate
b, a = signal.butter(4, normal_cutoff, btype='lowpass')

# 滤波处理
filtered_data = signal.lfilter(b, a, data)

# 写入输出文件
wav.write("filtered_test.wav", rate, filtered_data.astype(data.dtype))
ログイン後にコピー

上記のコードでは、wav モジュールを使用して元のオーディオ データを読み取り、次にローパス フィルターを構築し、signal.lfilter 関数を使用して元のデータをフィルター処理します。最後に、wav モジュールを使用して、処理されたオーディオ データを出力ファイルに書き込みます。

3. LibROSA

LibROSA は、音楽およびオーディオ分析用の Python ライブラリであり、複数のオーディオ ファイル形式をサポートし、オーディオ データを処理するための多くの関数を提供します。 LibROSAを使用すると、音声特徴抽出、音声信号処理、分析などの作業を簡単に行うことができます。さらに、LibROSA は、オーディオの時間領域および周波数領域の分析、メル周波数フィルター バンク、メル ケプストラム、MFCC など、一般的に使用される特徴抽出アルゴリズムもカプセル化します。

LibROSA のインストール方法:

pip install librosa
ログイン後にコピー

以下は、オーディオ分析に LibROSA を使用する方法を示す簡単な例です:

import librosa

# 读取音频文件
y, sr = librosa.load("test.wav")

# 提取音频特征
# STFT
D = librosa.stft(y)

# 梅尔频率滤波器组 (melspectrogram)
S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128,
                                    fmax=8000)

# 梅尔倒谱系数 (MFCCs)
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)

# 显示特征提取结果
import matplotlib.pyplot as plt
librosa.display.specshow(librosa.power_to_db(S, ref=np.max),
                            y_axis='mel', fmax=8000,
                            x_axis='time')

plt.colorbar(format='%+2.0f dB')
plt.title('Mel spectrogram')
plt.tight_layout()
plt.show()
ログイン後にコピー

上記のコードでは、 librosa.load 関数を使用します。オーディオ データを読み取り、librosa.stft、librosa.feature.melspectrogram、librosa.feature.mfcc などの関数を使用してオーディオから特徴を抽出し、処理されたオーディオ特徴マップを表示します。

概要

この記事では、PyAudio、SciPy、LibROSA など、一般的に使用される 3 つの Python オーディオ処理ライブラリを紹介し、その使用方法を示します。これらのライブラリは、音声の収集、加工、分析などの機能を簡単に実装することができ、これから音声処理を学ぶ読者の一助になれば幸いです。

以上がPython オーディオ処理ライブラリの使用ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート