torchaudioのチュートリアル、pytorchで音声を扱う

pytorchにtorchaudioというものがありました。興味があったので、チュートリアルをやっています。

興味あるところから攻めたほうが楽しいよね。

音声に対する機械学習処理というものが私の中で一つの目標となりつつあります。PyTorchのサイトを見ていたら、「torchaudio」というものがありました。チュートリアルとして一度やってみようと思いました。

音声に対してはどのように機会学習をしていくことができるかなど、少し楽しみな分野でもあります。

※GoogleColaboでの実行を前提としております。

ぱんだクリップ
Google Colaboratoryで楽にPythonプログラミングを始める | ぱんだクリップ Pythonプログラミングの学習にはGoogle Colaboratoryが楽で使いやすいよ。 Pythonの体験、機械学習プログラミングなどにはもってこいのプログラミング環境。 私は、最近、J...

こんな人の役に立つかも

・機械学習プログラミングの勉強をしている人

・PyTorchライブラリを利用したい人

・torchaudioを利用したい人

目次

GoogleColaboへインストール

Google Colabo環境にて、「torchaudio」は以下のようにpipしてインストールする必要がありました。

!pip install torchaudio

pipにてインストールが完了すると、torchaudioをimportできるようになりました。

import torch
import torchaudio
import matplotlib.pyplot as plt

オーディオファイルを開く

torchaudioは「MP3」と「wav」形式のオーディオファイル形式の読み込みに対応しているとのことです。

オーディオファイルを準備

次のオーディオファイルをGoogleDriveにアップロードしてColaboから読み込むようにしました。

colaboの左の「ファイル」に直接ファイルをアップロードしても、利用できるようでしたが、時間が経過すると削除されるようですので、Driveをマウントして読み込んだほうが良さそうです。

まず、ColaboにGoogleDriveをマウントしてファイルにアクセスできるようにします。

from google.colab import drive
drive.mount('/content/drive')

これを実行すると、GoogleDriveにアクセスするためのURLが表示されますので、そこにアクセスして、文字列をコピーします。それをテキストボックスにコピペしてエンターすると、Driveにアクセスが許可され、左の「ファイル」にDriveがマウントされました。

次に、マウントされたGoogleDriveの「MyDrive」以下に、適当なオーディオファイルを配置します。今回は、適当に作成した次のオーディオファイルを利用しました。適当なファイルがない場合、ダウンロードして利用していただくことも可能です。

この「test.wav」へColaboからアクセスするには、次のように階層を指定します。「filename」変数に文字列として次のようにパスを格納しておきます。

filename = "/content/drive/My Drive/test.wav"

プログラムで音声波形の確認

次のプログラムで、ファイルに保存されたオーディオを波形として確認することができます。

waveform, sample_rate = torchaudio.load(filename)

print("Shape of waveform: {}".format(waveform.size()))
print("Sample rate of waveform: {}".format(sample_rate))

plt.figure()
plt.plot(waveform.t().numpy())
Shape of waveform: torch.Size([2, 264600])
Sample rate of waveform: 44100
[<matplotlib.lines.Line2D at 0x7f3b27e89b38>,
 <matplotlib.lines.Line2D at 0x7f3abb892dd8>]

matplotlibで音声の波形が表示できるのはなんだか斬新でした。

音声もただのデータの配列なのでmatplotlibのグラフ描くのと同じように表示できるんだね。

今回の音声は、Lチャンネル、Rチャンネルの2チャンネルデータで、6秒の長さです。サンプリングレートが44100なので、1秒間に44100回のデータが存在するということです。そして、6秒なので、44100×6で264600のデータサイズとなっています。

ちなみに、縦軸は、音の大きさが-1~1までの数値で表現されていています。横軸にサンプリングの回数が取られていて、時間を表現しています。この状態が普段よく見る音の波形のグラフになります。

今回のチュートリアルにて、オーディオファイルを開いて波形表示する、というところまで結構簡単にできることがわかりました。torchaudioのチュートリアルはまだ続くので、引き続きチュートリアルを行なって見たいと思います。

続きの記事はこちらです。

ぱんだクリップ
torchaudioのチュートリアル、pytorchで音声を扱う2 | ぱんだクリップ 引き続きtorchaudioについて勉強しています。音声は色々な周辺知識が必要ですね。 規格とかそういうものが多そうな気がするね。 前回に引き続き、torchaudioのチュートリア...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次