見出し画像

友だちPython ep3. librosa

はじめに


友だちPython シリーズのご紹介

友だちPython シリーズは、Python の小ネタを短文でお届けします。
小さなエピソードを重ねてPythonと仲良しになれたら、と願ってシリーズ名を付けました。

話題


AI・データサイエンスのための 図解でわかる数学プログラミング

この記事は、書籍「AI・データサイエンスのための 図解でわかる数学プログラミング 初版」(ソーテック社)のコードで生じた問題対処を取り扱います。


今回の友だち

■ librosa (リブロサ)
音楽・オーディオ分析に力を発揮するパッケージです。

公式サイトのリンクはこちらです。


問題の概要

第9章、9-6「音の分類のために必要なデータの前処理をしてみよう」の「チェロの音を読み込んで再生する」コード(409ページ)で問題が生じました。
librosa (リブロサ)の実行時にエラーが発生して、コードが動きません

実行環境
・librosa のバージョン: 0.10.0
・Anaconda 環境
・VS code の Jupyter Notebook で実行

問題の詳細

エラーメッセージの嵐がノートブックのセルを激しく叩きのめします。

ModuleNotFoundError: No module named '_soundfile_data'
OSError: cannot load library '・・・・・\sndfile.dll': error 0x7e
OSError: cannot load library 'libsndfile.dll': error 0xc1

何か sound 関係のファイルが見つからない、そんなエラーのようです。

原因

こちらのサイトで解決策を見つけることができました。
ありがとうございます!

librosa の処理内部で呼び出す soundfile ライブラリを読み込めないのがエラーの直接的な原因です。

実行環境には soundfile ライブラリに相当する pysoundfile (バージョン 0.12.1 ) がインストールされています。
conda コマンドで librosa をインストールしたときに、一緒に pysoundfile がインストールされたのでした。

しかし、librosa は pysoundfile を読み込めなかったのです。
Anacondaのライブラリ依存関係って・・・。

対策の実施

pysoundfile を削除して、soundfile を「pip」でインストールします。
(Anaconda環境が・・・、嗚呼)

conda remove pysoundfile --force-remove

pip install SoundFile

改善後

次のコードを無事に実行できました!

# チェロの音声データのうちの1つを読み込む
data, rate = librosa.load(train_data_dir + 
                          train_df[train_df['label']=='Cello'].index[0])

# 読み込んだデータを再生する
ipd.Audio(data=data, rate=rate)
出力イメージ

Jupyter Notebook に再生画面が表示されます。
▶ボタンを押すと、チェロを鳴らす音が5秒間流れました。
めでたしめでたし、???

後日談

少し後ろの節、9-7「LSTMを使って音の分類をしてみよう」で、記憶をもつディープラーニングアルゴリズム「LSTM」で楽器の分類モデルを構築します。
ただし、40エポックの訓練に20時間以上かかる見通しです(GPU無し)。

終わりが見えないので、伝家の宝刀、Google Colab を抜きました。
GPUのおかげで「15分」で訓練完了です!
ちなみに、Google Colab 環境には動ける librosa がインストール済みなので、エラーが発生せず、確実に実行できました。

最初から Google Colab を使っていたら、この記事は生まれなかったでしょう。
偶然の出会いに感謝です。
ありがとう、librosa !

おわり

ブログの紹介


noteで3つのシリーズ記事を書いています。
ぜひ覗いていってくださいね!

1.のんびり統計
統計検定2級の問題集を手がかりにして、確率・統計をざっくり掘り下げるブログです。
雑談感覚で大丈夫です。ぜひ覗いていってくださいね。
統計検定2級公式問題集CBT対応版に対応しています。

2.Python機械学習プログラミング実践記
書籍「Python機械学習プログラミング PyTorch & scikit-learn編」を学んだときのさまざまな思いを記事にしました。
この書籍は、scikit-learnとPyTorchの教科書です。
よかったらぜひ、お試しくださいませ。

3.データサイエンスっぽいことを綴る
統計、データ分析、AI、機械学習、Pythonのコラムを不定期に綴っています。
「統計」「Python」「数学とPython」「R」のシリーズが生まれています。

この記事が気に入ったらサポートをしてみませんか?