#はじめに
音声合成モデルを学習させるための音声データを録音、加工するのに便利なソフトとその使い方を簡単にまとめた記事です。自分で音声合成を作ってみたい方の一助になればと思います。
音声合成モデルの作り方はRRR_troisRさんの記事で紹介されているのでそちらをご参照ください。
#Audacity
##Windows10
###インストール
Audacityを公式サイトからダウンロードします。
ページに飛ぶと画像のようにダウンロードボタンがあるのでクリックしてダウンロードして下さい。
ダウンロードしたファイルをダブルクリックして実行するとインストーラが起動するので、指示された内容に従って進めてください。
これでAudacityのインストールは完了です。
##使い方
###基本的な設定項目
作業に関連する部分だけをピックアップします。
(1) PCに接続されている録音デバイスを指定します。(画像は何も接続されていない状態のものです)
複数接続されている場合は、クリックするとプルダウンメニューが表示されるので、使用したいデバイスを選んでください。
(2) 録音する音声のチャンネル数を指定します。
音声合成ではモノラルの音声を使用しますので、モノラルを指定しましょう。
(3) 音声の再生デバイスを指定します。
複数接続されている場合は、プルダウンメニューから使用したいデバイスを選択してください。
(4) 音声のサンプリングレートを指定します。
音声合成で使用するデータは24000Hzや、22050Hzのものが多いのですが、これは後で変換できるので特に変える必要はありません。
###録音
録音は、動画のように
- 録音ボタンを押す
- しゃべる
- 停止ボタンを押す
- 再生ボタンで確認
という簡単な操作でできます。
###無音区間で分割
Audacityには無音区間で区切って、音声部分をラベル付けする機能が備わっています。
なので、録音する際に1秒以上間をおいて次の文を読み上げるようにするなど、無音区間で区切れるように発音すると便利です。
録音
- 録音開始
- 一文読み上げ
- 1秒くらい待つ
- 次の文読み上げ
- 終わったら停止ボタン
ラベル付け
- トラックを選択する
- 画面の真ん中上らへんの「解析」メニューを開く
- 「音声から自動ラベル付け」を選択
- OKをクリックする
音声ファイルごとにこのウィンドウが出てくるので、ここにチェックを入れておくと楽です。
##PCの音を録音
PCの音を録音する場合は、「音声ホスト」を「Windows WASAPI」に設定し、
録音デバイスにヘッドホンやスピーカーを指定します。
この状態で録音ボタンを押すと、PCの音を録音できます。
アニメやゲームのボイスを収集したいときはこれで録音できます。
アニメや音声作品などでは、効果音やBGMが入っており、純粋なボイスを抽出するのは困難です。
一方、ゲーム内のボイスであれば、設定でBGMと効果音をミュートにできるので、ノイズのない
きれいな音声データが取れます。
しかし、これらの作品の音声を利用したことで生じるいかなる問題についても
私は一切責任を負いませんので、すべて自己責任で行ってください。
#####(1) どれくらいの音量以下を無音と判断するかを指定します。
この数値はdBなので、0が最大値です。
Audacityでは、最小値は-60dBです。
#####(2) 何秒以上無音が続いたら区切るのか、を指定します。
短すぎると、文章の句読点で切られてしまい、
大きすぎると、二つの文章がつながってしまいます。
デフォルトの値で問題ないです。
#####(3) どれだけ短いラベルまで許容するのか、を指定します。
短すぎると、マイクをちょっとぶつけたときなどのバーストノイズを拾ってしまう可能性があります。
大きすぎると、短い文章の時に無音時間が多く含まれたり、二つの文章がつながってしまったりします。
デフォルトの値で問題ないです。
#####(4) 音声を区切るとき、最初と最後に入れる無音時間を指定します。
デフォルトの値で問題ないと思いますが、指定するとしたら0.1~0.5秒ほどです。
#####(5) ラベルの命名規則を指定します。
「#」は、何桁で番号付けするかを指定します。
画像の場合は「#」が2つありますので、2桁で
01
02
03
...
のように2桁になるようにゼロ埋めされます。
「#」が3つなら
001
002
003
...
となります。
例:TEST####0
TEST0000
TEST0001
TEST0002
...
###メモリをdB表記にする
トラックのメモリのところを右クリックして、メニューから「dB」を選択すると、dB表記で波形が見れます。
###音声を正規化する
選択した範囲の音声を、最大値が-1dBになるように音量を調整します。
動画のように、正規化した範囲を選択して、「エフェクト → ノーマライズ」を適用します。
最大値は、設定で変えることができます(最大0)
###ノイズ低減
Audacityの機能で、多少のノイズならば消すことができます。
以下に手順を示します。
- ノイズ(無音)部分を選択する
- 「エフェクト → ノイズ低減」を選択
- 「ノイズのプロファイルを取得」をクリック
この操作をしないと、ノイズ低減を実行できません。
動画では、OKボタンが押せるようになっていますが、前回のプロファイルが残っているためです。
ノイズのプロファイルがない状態でノイズ低減の項目を開くと、OKが押せないようになっています。
- トラック全体を選択
- 再度「エフェクト → ノイズ低減」を選択
- OKをクリック
プロパティを閉じて、ファイルをダブルクリックすると、Audacityが起動します。
このファイルがAudacity本体ですので、デスクトップに移動するなり、使いやすい場所においてください。
###使い方
###基本的な設定項目
windows版と同様ですので、省略します。
チャンネルはモノラルを指定しましょう。
###音声の録音から書き出しまで
wondows版と同様なので、一通りの作業を動画に収めたので、こちらで確認してください。
動画の音声はありません。仕様です。
###補足
wondows版と同様ですので省略します。
#SoXで音声を加工する(Ubuntu)
SoX(Sound eXchenge)はクロスプラットフォームのコマンドラインユーティリティで、さまざまな形式のオーディオファイルを他の形式に変換できます。
このコマンドを利用して、複数の音声ファイルを一気に変換します。
Ubuntuについてのみ解説します。
##SoXのインストール
端末を開いて以下のコマンドを実行します。
$ sudo apt install sox
インストールされたかどうか以下のコマンドで確認します。
$ sox --version
sox: SoX v14.4.2
このようにバージョンが表示されればインストールできています。
##使い方
soxの使い方は以下のとおりです。
sox [global-options] [format-options] infile1 [[format-options] infile2] ... [format-options] outfile
[effect [effect-options]] ...
#####global-options:バッファサイズの指定や、警告、エラーメッセージの表示非表示などを指定できます。
本記事で取り扱うのは正規化する際に指定する--norm=[dB]
です。
#####format-options:音声ファイルの形式を指定します。主なオプションを以下に示します。
-r
,--rate
サンプリングレートを指定します。
-c
,−−channels
チャンネル数を指定します。ステレオの場合は2、モノラルの場合は1を指定します。
-b
,--bits
量子化ビット数を指定します。
量子化ビット数
量子化ビット数とは、音の大きさを何段階で表現するかを表す数値です。 16bitなら、 $2^{16}=65536$ 段階で音の大きさを表現することになります。-t
,--type
wavやmp3など、音声ファイルの形式を指定します。
-e
,--encoding
音声を記録する数値の型を指定します。(unsigned-integerなど)
#####infile1:変換元の音声ファイルを指定します。
#####outfile:変換後のファイルを指定します。
#####[effect [effect-options]] ...:イコライザやフランジャーなどのエフェクトを指定できます。
本記事で扱うのはsilence
という無音区間で区切るためのエフェクトです。
##サンプリングレートの変更
サンプリングレートを変換するコマンドの例を示します。
$ sox hoge.wav -r 16k hoge_16k.wav
infileのフォーマットは指定しなくても指定したファイルの形式にしたがって処理されます。
outfileのフォーマットは、ファイル名の手前にオプションを指定することに注意してください。
##音声を無音部分で分割
無音区間で区切るコマンドの例を示します。
$ sox hoge.wav out.wav silence 1 1 -30d 1 0.5 -30d : newfile : restart
silence
の使い方は以下のとおりです
silence [−l] above-periods [duration threshold[d|%] [below-periods duration threshold[d|%]]
#####-l
オプション
切り出した音声の前後に、無音を設けるかどうかを表します。
このオプションをつけると前後に無音区間が設けられます。
#####above-periods
何回目の音声検出まで切り捨てるか、を指定します。
1を指定すると、先頭から音声が検出されるまでの無音区間が切り捨てられます。※後述する補足の図1
#####below-periods
無音区間が何回検出されて以降を切り捨てるか、を指定します。(多分)※後述する補足の図1
通常1を指定します。
#####duration
最短継続時間を指定します。先述したAudacityの「音声から自動ラベル付」の(2),(3)に相当します。
#####threshold
しきい値を指定します。先述したAudacityの「音声から自動ラベル付」の(1)に相当します。
数値にdをつけるとdBとして扱われ、%をつけると、音声内の最大値に対する割合で扱われます。
より詳しい内容については、こちらのサイトをご参照ください。
##音声を正規化する。
音声を正規化するコマンドの例を示します。
$ sox --norm hoge.wav hoge_norm.wav
--norm=-3
のように指定すると、-3dBを最大値として正規化します。
##複数ファイルの一括変換
複数ファイルのサンプリングレートを16kHzに一括で変換するコマンドの例を示します。
$ file_list=`find [音声ファイルがあるフォルダのPath] -name "*.wav" `
$ for f in $file_list; do sox $f -r 16k [出力先のフォルダのPath]/${f##*/}; done
一行目は、対象となるファイルのリストを変数に入れています。
バッククォーテーション(`)でコマンドを括ることによって、コマンドの実行結果が代入できます。
findコマンドで、指定したフォルダにの中で(任意の文字).wavに当てはまるファイルを取得しています。
二行目はforループで、ファイルを一つづつ処理しています。
${変数名##*/}は変数に格納されたPathからファイル名だけを取り出す書き方です。
出力先のフォルダは、コマンドを実行する前に作っておいてください。
##補足
silenceエフェクトについてのイメージ画像です。
###図1