【Pythonで学ぶ音声認識】第3章:音声処理の基礎と特徴量抽出(3.3節まで)

2.4K Views

October 14, 23

スライド概要

Pythonで学ぶ音声認識の輪読会第2回の発表スライドです。
2023年10月12日(木) 18:45~

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2023年度後期輪読会 #2 Pythonで学ぶ音声認識 3.1 ~ 3.3 京都大学 佐川 薬学部 達也 0

2.

目次 ⚫ 3.1 データの準備 ⚫ 3.2 音声ファイルを読み込んでみよう ⚫ 3.3 フーリエ変換を使って音声を周波数分解しよう colab notebook: https://colab.research.google.com/drive/1bVcM_zDIsggIwAVya8Fvks1zvZDKZz-?hl=ja#scrollTo=mEDiYQdUTfRC 1

3.

3.1 データの準備 1. 本書ではJUSTコーパス[Sonobe 2017]というデータセットをダウンロー ドして図のようにデータを配置する。 2. 音声のサンプリング周波数を48kHzから16kHzに変換(ダウンサンプリン グ)する。 サンプリング周波数は1秒間の間に音圧値が記録される回数。サンプリング周波数が大きいほど情報量として は大きいが、大きすぎると扱いにくいため小さくする。 https://stackoverflow.com/questions/30619740/downsampling-wav-audio-file 2

4.

3.1 データの準備 3. ラベルの前処理を行う。 JUSTではラベルが複数の表記によって与えられるため、後でモデルの学習に使えるようにキャラクター・か な・音素ごとにスペースで区切ったような形式に変換する。 前処理前 前処理後 4. データを学習、開発、評価データに分ける。 学習データ(train)はモデルの学習、開発データ(dev)はパラメータチューニング、評価データ(test)は学習し たモデルの評価に使用する。 3

5.

3.2 音声ファイルを読み込んでみよう 音声が保存されるプロセス 1. 音声をマイクが検知 検知に使われるマイクの数をチャネル数という。チャネル数が1の音声はモノラル、チャネル数が2の音声は ステレオとも呼ばれる。 2. 連続値を離散値に変換 波がサンプリング周波数×秒数の点の集合として表現される。音圧方向に関しても離散化が行われ、上限と 下限の間に一定間隔で目盛りを刻み、各点が最も近い目盛りの値で近似される。この時の目盛りの総数をサ ンプルサイズと呼ぶ。本書ではサンプルサイズは216-32,768~32767の値をとる。 4

6.

3.2 音声ファイルを読み込んでみよう BASIC5000_0001.wavの波形を見てみる Sampling Frequency: 16000 Sampling Size: 2 Number of Channels: 1 Number of Samples: 51040 5

7.

3.3 フーリエ変換を使って音声を周波数分解しよう 波形プロットから、鳴っている音を視覚的に認識するのは難しい そこで、時間信号を周波数ごとの信号に 分解するフーリエ変換を用いる。 フーリエ変換にもいろいろな種類があるが、 今回は離散フーリエ変換を使用。 x(n): 音声波形xの、時刻nの時の音圧値 N: 分析区間内のサンプル数 高い音?低い音? j: 虚数単位、√-1 y: スペクトルと呼ばれる、xを周波数成分に分解した結果 k: 周波数。ただし、1秒を1周期とみなす周波数[Hz]ではなく0~N-1の範囲を1周期とみなしたときの周波数 6

8.

3.3 フーリエ変換を使って音声を周波数分解しよう スペクトルyから時間信号xに戻すことも可能で、以下の逆離散フーリエ変換を用いる フーリエ変換を使用することで本当に周波数に分解されているかの確認は、本書の数 式を参照。 y(k)のことを(複素)スペクトルと呼ぶのに対し、|y(k)|を振幅スペクトル、偏角 ∠y(k)を位相スペクトル、 |y(k)|2をパワースペクトルと呼ぶ。 7

9.

3.3 フーリエ変換を使って音声を周波数分解しよう 振幅スペクトル|y(k)|はk=N/2を境に左右対称になり、|y(k=N-K)|の値は|y(k=K)| に等しくなる。したがってk=N/2 + 1以降の値は冗長な情報であるため、音声分析で は使われない。 (時間信号をフーリエ変換にかけると正の周波数と、その複素共役である負の周波数が現れる。 |y(k=N-K)|は、負の周波数[-K]の成分を意味し、 |y(k=K)|に等しくなる。) 8

10.

3.3 フーリエ変換を使って音声を周波数分解しよう 実際の音声波形に対して離散フーリエ変換を行い、周波数分解をしてみる。 工夫点としては、 ・高速フーリエ変換(FFT)という高速な離散フーリエ変換法を使用 ・振幅スペクトルに対数をとって極端な値の振れを低減し、分析をしやすくする ・振幅が0の時対数をとると問題になるため、微小な値を足す(フロアリング処理) ・スペクトルの横軸の最大値をサンプリング周波数/2にする。そもそもサンプリング周波数Fs で記録した音声にはFs/2の周波数までの情報しか含まれていない(サンプリング定理)。この上 限周波数をナイキスト周波数と呼ぶ。振幅スペクトルはN/2が折り返し点となるが、これがナ イキスト周波数に相当する。 低い音の割合が高そう FFT 9