音声強調、音声認識や音環境分類のような音データにおけるデータ拡張方法であるSpecAugmentをPyTrochで試す。PyTorchには、FrequencyMasking、TimeMaskingとTimeStretchの3つのクラスが用意されている。 torchaudio.transforms – Torchaudio v0.10.0 Documentation データ拡張する対象の音源を、以下コードでダウンロードし、スペクトログラムに変換する。 関連記事 – 【PyTorch】Pythonで時間波形からスペクトログラムへ変換【librosa】 import os import requests import librosa import matplotlib.pyplot as plt import torch import torchaudio import torchaudio.t
torch.fft.fftの使い方 torch.fft.fftの第一引数inputにTensor配列を指定しれば、高速フーリエ変換の結果が返ってくる。 import torch t = torch.arange(10) print(t) # tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) T = torch.fft.fft(input=t) print(T) # tensor([45.+0.0000j, -5.+15.3884j, -5.+6.8819j, -5.+3.6327j, -5.+1.6246j, # -5.+0.0000j, -5.-1.6246j, -5.-3.6327j, -5.-6.8819j, -5.-15.3884j]) T = torch.fft.fft(input=t, n=3) print(T) # tensor([ 3.0000+
speech commands datasetsのダウンロード MicrosoftのPyTorch を使用したオーディオ分類の概要に沿って、yes/noのspeech commands datasetsでPCENと対数スペクトルの特徴量による性能差を見ていきます。 PyTorch を使用したオーディオ分類の概要 – Microsoft Docs Learn 必要なライブラリをインポートします。Google Colabの場合は、librosaをインストールしてください。 !pip install git+https://github.com/librosa/librosa import os import torch import torchaudio from torch.utils.data import Dataset, DataLoader from torchvision impo
音声識別や音響イベント検出の特徴量として、対数メルスペクトルがよく用いられています。この対数メルスペクトルに代わる特徴量として、2017年にPer-Channel Energy Normalization(PCEN)が提案され、性能が向上することが報告されています。今回は、librosaを使って、PCENを算出します。 Per-Channel Energy Normalization(PCEN)とは PCENは、 ICASSP2017でGoogleから提案された方法で、以下式から算出されます。 Trainable Frontend For Robust and Far-Field Keyword Spotting – arXiv Eにはメルフィルターバンクのエネルギー、Mは平滑化したエネルギーで、εはゼロ割防止の小さな定数、aによって正規化の強さを設定します。δはオフセット、rはダイナミッ
Numpyによるホワイトノイズの生成 ホワイトノイズはランダムな時系列信号を生成すれば良いので、np.random.randを使用します。 np.random.rand – Numpy v1.26 Manual ここでは、サンプリング周波数が44.1kHz、振幅の範囲が -1〜1、長さが3秒のホワイトノイズを作成します。 import numpy as np import matplotlib.pyplot as plt A = 1.0 # 振幅 sec = 3.0 # 信号の長さ s sf = 44100 # サンプリング周波数 Hz x = 2*A*(np.random.rand(round(sf*sec))-0.5) # ホワイトノイズの生成f plt.plot(x) 時間波形 PyTorchによるホワイトノイズの生成 PyTorchでは、torch.rand関数を使用して、ホワイト
numpyによる正弦波の生成 正弦波(純音)は、次式で表すことができる。 Aは振幅、fは周波数[Hz]、tは時間である。今回、振幅は0.5、周波数は1 Hz、3秒間の正弦波を生成する。ここでtは、デジタル信号であるため1サンプルあたりの時間は1/sfとする。詳細は以下参考資料をご覧ください。 参考資料 – 法政大学 ディジタルデータ資料 import numpy as np import matplotlib.pyplot as plt A = 0.5 # 振幅 f = 1.0 # 周波数 Hz sec = 3.0 # 信号の長さ s sf = 44100 # サンプリング周波数 Hz t = np.arange(0, sec, 1/sf) #サンプリング点の生成 y = A*np.sin(2*np.pi*f*t) # 正弦波の生成 plt.plot(t, y);
PySoundFileで音声/音楽データを読み込むには、soundfile.readを使う。 soundfile.read – PySoundFile v0.10.0 API Documentation 今回用いるサンプル音源を、以下コードを実行して、_sample_dataフォルダにダウンロードする。 import os import requests _SAMPLE_DIR = "_sample_data" SAMPLE_WAV_URL = "https://pytorch-tutorial-assets.s3.amazonaws.com/steam-train-whistle-daniel_simon.wav" SAMPLE_WAV_PATH = os.path.join(_SAMPLE_DIR, "steam.wav") os.makedirs(_SAMPLE_DIR, exist
Pythonの科学技術計算ライブラリであるSciPyで、音声/音楽データを読み込むにはscipy.io.wavfile.readを用いる。 scipy.io.wavfile.read – SciPy v1.8.0 API reference SciPyライブラリ内にある音源を、サンプル音源として用いるため以下コードを実行して、音源のパスを得る。 from os.path import dirname, join as pjoin from scipy.io import wavfile import scipy.io data_dir = pjoin(dirname(scipy.io.__file__), 'tests', 'data') wav_fname = pjoin(data_dir, 'test-44100Hz-2ch-32bit-float-be.wav')
音楽とオーディオ分析のPythonライブラリであるlibrosaで、音声/音楽データを読み込むにはlibrosa.loadを用いる。 librosa.load – librosa v0.9.0 Documentation 今回用いるサンプル音源を、以下コードを実行して、_sample_dataフォルダにダウンロードする。 import os import requests _SAMPLE_DIR = "_sample_data" SAMPLE_WAV_URL = "https://pytorch-tutorial-assets.s3.amazonaws.com/steam-train-whistle-daniel_simon.wav" SAMPLE_WAV_PATH = os.path.join(_SAMPLE_DIR, "steam.wav") os.makedirs(_SAMPLE_D
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く