ASPについて学ぶ - 3

はじめに

[前回] はDeep LearningによるTTS(Text To Speech)の手法である
Tactron2 + Waveglowについて触れた。
今回はTTSの学習を行うために必要なデータ作成方法と 前処理について検証した。

データ作成方法

TTSは文字情報から音声を合成するタスクである。
そのため最低限必要なデータは文字とそれに対応する音声である。

JSUTと呼ばれる日本語の読み上げデータセットがあるのでデータの録音条件はここを参考にした。

録音設定
サンプルレート 48000
マイク ヘッドホンについているUSBマイク
環境 自宅

basic5000と呼ばれる文章の読み上げを50文章ほど行ってみた。
読みなおしなど含めて、20分くらいかかった。
5000文全てに対して行うとすると30時間以上かかる計算となる。
(録音方法を効率化して読み間違いが減ればもう少し短くなると思う)

録音したデータの解析

あるデータの波形とメルスペクトルグラムは以下のようになっている。  

f:id:nakamrnk:20200423144609j:plain

このデータはあまり質の良いものではない。

  1. ノイズが大きい
  2. 録音の最初と最後に無駄な空白がある

HPSS

ibrosaのチュートリアル1を参考にしていくつか信号処理をかけてみた。
Harmonic-percussive source separation (HPSS)は本来は演奏から
ハーモニー成分とパーカッション成分(打楽器)を分離するためのものらしいが
音声にかけると以下のようになった。

f:id:nakamrnk:20200423154818j:plain

音声を聴き比べる限りはpercussive成分のほうが音声に近く波形を見る限り  
ノイズはほぼHermonic成分のようである。
また、Percusive成分のほうを使えば最初と終わりの無音期間を抽出しやすそうに見える。  

High pass filter

バタワースのハイパスフィルターを用いてノイズ除去を行った。

参考 : https://watlab-blog.com/2019/04/30/scipy-highpass/

f:id:nakamrnk:20200423163752j:plain

ノイズは減り音声としても聞き取れるレベルではあるが、 音声を聞く限りはまだノイズがのっている。
もう少し静かな環境で録音したほうが良いかもしれない。

まとめと今後

今回はデータのサンプリングとノイズ除去について検証した。
現状まだノイズを完全に除去できていないが、 これでどの程度学習できるかは試してみたい。
ただデータの収集に時間がかかるのでそれまではどのモデルの学習を行うかを検討する。

参考文献