Audacity,SoXで音声合成に使うデータの録音、加工【Windows10】【Ubuntu20.04】

#はじめに
音声合成モデルを学習させるための音声データを録音、加工するのに便利なソフトとその使い方を簡単にまとめた記事です。自分で音声合成を作ってみたい方の一助になればと思います。

音声合成モデルの作り方は[RRR_troisRさんの記事](https://qiita.com/RRR_troisR/items/6288b9bdc6e725aa8440#_reference-207c13a41d409e1fada0)で紹介されているのでそちらをご参照ください。

#Audacity
##Windows10
###インストール
Audacityを[公式サイト](https://www.audacityteam.org/)からダウンロードします。
ページに飛ぶと画像のようにダウンロードボタンがあるのでクリックしてダウンロードして下さい。
![windows_auda_download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/04da6466-a6df-ac94-085f-70197cc8a57e.png)

ダウンロードしたファイルをダブルクリックして実行するとインストーラが起動するので、指示された内容に従って進めてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/221ba59a-a7df-11f3-80cc-a741e0a56c68.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/55e2ae1d-b722-aac1-c663-568148a28ea9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/9ee6ee52-c598-5836-0f00-44e552a9802c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/255bedea-958f-3456-7f01-8cfd25387c9f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/353cf89a-118c-c955-ea8f-96a463a581a7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/82a9c661-b721-3633-4f9a-c73d20ecdf62.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/9d1e3323-1e66-baf9-c965-1d48b95a112d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/5b7f426d-8095-5170-3d7f-84cc870e9750.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/46fd79e5-8a96-0284-49ce-a01c47f90595.png)
これでAudacityのインストールは完了です。

　
　
　
##使い方
###基本的な設定項目
作業に関連する部分だけをピックアップします。
![windows_auda_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/61eb3062-4d12-f5d6-190a-9d5b7fa723c9.png)

(1) PCに接続されている録音デバイスを指定します。(画像は何も接続されていない状態のものです)
　複数接続されている場合は、クリックするとプルダウンメニューが表示されるので、使用したいデバイスを選んでください。

(2) 録音する音声のチャンネル数を指定します。
　　音声合成ではモノラルの音声を使用しますので、モノラルを指定しましょう。

(3) 音声の再生デバイスを指定します。
　複数接続されている場合は、プルダウンメニューから使用したいデバイスを選択してください。

(4) 音声のサンプリングレートを指定します。
　音声合成で使用するデータは24000Hzや、22050Hzのものが多いのですが、これは後で変換できるので特に変える必要はありません。

###録音
録音は、動画のように

- 録音ボタンを押す
- しゃべる
- 停止ボタンを押す
- 再生ボタンで確認

という簡単な操作でできます。
　

<iframe width="560" height="315" src="https://www.youtube.com/embed/FpAwTZF-0sk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
　
これを繰り返して、１文ずつ録音してファイルに出力してもいいですが、手間なので
一気に録音する方法を紹介します。

###無音区間で分割
Audacityには無音区間で区切って、音声部分をラベル付けする機能が備わっています。
なので、録音する際に１秒以上間をおいて次の文を読み上げるようにするなど、無音区間で区切れるように発音すると便利です。

**録音**

- 録音開始
- 一文読み上げ
- １秒くらい待つ
- 次の文読み上げ
- 終わったら停止ボタン

**ラベル付け**

- トラックを選択する
- 画面の真ん中上らへんの「解析」メニューを開く
- 「音声から自動ラベル付け」を選択
- OKをクリックする

<iframe width="560" height="315" src="https://www.youtube.com/embed/DlBy4ifX0F0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
　
　
**出力**
「ファイル　→　書き出し　→　複数ファイルの書き出し」
をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/5dcb4049-8773-5b08-1c2f-7f2e3f69a36f.png)

左下の「ファイル分割基準」の項目で「ラベル」を選択。
![audacity_output.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/9ca39ca6-e43c-a997-0b9d-ea2f939589e0.png)

「フォルダー」に書き出したいフォルダを指定して「書き出し」
![audacity_output2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/99ecdf05-38e0-c979-a93b-0219de956485.png)
![audacity_output3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/07f8a16f-e370-6f95-679e-8d55389d701d.png)

音声ファイルごとにこのウィンドウが出てくるので、ここにチェックを入れておくと楽です。
![audacity_output4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/311c5139-e313-5a8f-1f34-898f93faeaad.png)

このように、分割されたファイルが作成されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/33e6338d-ca85-d044-c132-44b62fa6de44.png)

##PCの音を録音
PCの音を録音する場合は、「音声ホスト」を「Windows WASAPI」に設定し、
録音デバイスにヘッドホンやスピーカーを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/9f89bf4a-e4c8-9d5d-a23f-14e633290bff.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/58939af9-4af5-d8c0-4a80-34f8202b7f7d.png)

この状態で録音ボタンを押すと、PCの音を録音できます。

アニメやゲームのボイスを収集したいときはこれで録音できます。
アニメや音声作品などでは、効果音やBGMが入っており、純粋なボイスを抽出するのは困難です。
一方、ゲーム内のボイスであれば、設定でBGMと効果音をミュートにできるので、ノイズのない
きれいな音声データが取れます。
<font color=Red><b>しかし、これらの作品の音声を利用したことで生じるいかなる問題についても
私は一切責任を負いませんので、すべて自己責任で行ってください。</b></font>

　
　
　
##補足
###「音声から自動ラベル付け」の設定項目
![audacity_label_setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/3d136b04-80f6-d27a-3006-56e5bb75eee6.png)

#####(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表記で波形が見れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/2e4cdd53-b331-f048-7ca4-282a742df0b4.png)

###音声を正規化する
選択した範囲の音声を、最大値が-1dBになるように音量を調整します。
動画のように、正規化した範囲を選択して、「エフェクト　→　ノーマライズ」を適用します。
最大値は、設定で変えることができます(最大0)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/3000f9da-f89c-87d7-3f0f-8a750066b173.png)

<iframe width="560" height="315" src="https://www.youtube.com/embed/g4dfKobjHDA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
　
連続録音した場合、それぞれの発音に音量差が出てしまうと思います。
それを丸ごと正規化しても、音量差が残ったままなので、
一つ一つ正規化する必要があります。
これは大変手間なので、後述するsoxコマンドでの正規化を推奨します。

###ノイズ低減
Audacityの機能で、多少のノイズならば消すことができます。
以下に手順を示します。

- ノイズ（無音）部分を選択する
- 「エフェクト　→　ノイズ低減」を選択
- 「ノイズのプロファイルを取得」をクリック

この操作をしないと、ノイズ低減を実行できません。
動画では、OKボタンが押せるようになっていますが、前回のプロファイルが残っているためです。
ノイズのプロファイルがない状態でノイズ低減の項目を開くと、OKが押せないようになっています。

- トラック全体を選択
- 再度「エフェクト　→　ノイズ低減」を選択
- OKをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/42df7523-ee3f-add4-8f8a-5193e0ee6e6b.png)
![audacity_noize_decreasing.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/42f2d3c5-53ad-213e-f25f-3967ab575359.png)
<iframe width="560" height="315" src="https://www.youtube.com/embed/28001GS2nTE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
　
　
　
　
　
　
　
　
##Ubuntu20.04
###インストール
同様に[公式サイト](https://www.audacityteam.org/)からダウンロードします。
![audacity_download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/7798f22c-4080-726e-7a57-a35c4a5745e2.png)
ダウンロードフォルダを開いて、ダウンロードしたファイルを選択し、右クリックメニューからプロパティをクリックします。
![Screenshot from 2021-12-30 18-02-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/582ed3b1-a8a2-978b-5084-17d5e08361ec.png)
プロパティのアクセス権のタブを開き、「プログラムとして実行可能」にチェックを入れます。
![アクセス権.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/1afba3b5-a5b6-f145-d041-042723dfb04e.png)

プロパティを閉じて、ファイルをダブルクリックすると、Audacityが起動します。
このファイルがAudacity本体ですので、デスクトップに移動するなり、使いやすい場所においてください。
![Screenshot from 2021-12-30 18-12-56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/bd54fd82-75c0-24e1-6c99-8ca4284da172.png)

　
　
###使い方
###基本的な設定項目
windows版と同様ですので、省略します。
チャンネルはモノラルを指定しましょう。
![基本設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/229e4612-9c18-da04-5e55-d6e80bf98497.png)
###音声の録音から書き出しまで
wondows版と同様なので、一通りの作業を動画に収めたので、こちらで確認してください。
動画の音声はありません。仕様です。
<iframe width="560" height="315" src="https://www.youtube.com/embed/g-hQDLpC9ew" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

###補足
wondows版と同様ですので省略します。
　
　
　
　
#SoXで音声を加工する(Ubuntu)
[SoX(Sound eXchenge)](http://sox.sourceforge.net/)はクロスプラットフォームのコマンドラインユーティリティで、さまざまな形式のオーディオファイルを他の形式に変換できます。
このコマンドを利用して、複数の音声ファイルを一気に変換します。

Ubuntuについてのみ解説します。

##SoXのインストール
端末を開いて以下のコマンドを実行します。

```sh
$ sudo apt install sox
```
インストールされたかどうか以下のコマンドで確認します。

```sh
$ sox --version
sox:      SoX v14.4.2
```
このようにバージョンが表示されればインストールできています。
##使い方
soxの使い方は以下のとおりです。
><font color=Black>sox</font>　 [<font color=DarkRed>global-options</font>] [<font color=Blue>format-options</font>] <font color=Green>infile1</font> <font color=DimGray>[[format-options] infile2] ... </font>[<font color=Blue>format-options</font>] <font color=Indigo>outfile</font> 
　　　<font color=MediumVioletRed>[effect [effect-options]] ...</font>

#####<font color=DarkRed>global-options</font>：バッファサイズの指定や、警告、エラーメッセージの表示非表示などを指定できます。
　　　　　　　　本記事で取り扱うのは正規化する際に指定する``--norm=[dB]``です。

#####<font color=Blue>format-options</font>：音声ファイルの形式を指定します。主なオプションを以下に示します。

**``-r``,``--rate``**
　サンプリングレートを指定します。

**``-c``,``−−channels``**
　チャンネル数を指定します。ステレオの場合は2、モノラルの場合は1を指定します。
 
**``-b``,``--bits``**
　量子化ビット数を指定します。

 <details><summary>量子化ビット数</summary>量子化ビット数とは、音の大きさを何段階で表現するかを表す数値です。
16bitなら、
$2^{16}=65536$
段階で音の大きさを表現することになります。

**``-t``,``--type``**
　wavやmp3など、音声ファイルの形式を指定します。
**``-e``,``--encoding``**
　音声を記録する数値の型を指定します。(unsigned-integerなど)

#####<font color=Green>infile1</font>：変換元の音声ファイルを指定します。

#####<font color=Indigo>outfile</font>：変換後のファイルを指定します。

#####<font color=MediumVioletRed>[effect [effect-options]] ...</font>：イコライザやフランジャーなどのエフェクトを指定できます。

本記事で扱うのは``silence``という無音区間で区切るためのエフェクトです。



##サンプリングレートの変更
サンプリングレートを変換するコマンドの例を示します。

```sh
$ sox hoge.wav -r 16k hoge_16k.wav
```
<font color=Green>infile</font>のフォーマットは指定しなくても指定したファイルの形式にしたがって処理されます。
<font color=Indigo>outfile</font>のフォーマットは、ファイル名の手前にオプションを指定することに注意してください。



##音声を無音部分で分割
無音区間で区切るコマンドの例を示します。

```
$ sox hoge.wav out.wav silence 1 1 -30d 1 0.5 -30d : newfile : restart
```

``silence``の使い方は以下のとおりです
silence　[−l]　<font color=DarkRed>above-periods</font>　[duration　threshold[d|%]　[<font color=Blue>below-periods</font>　duration　threshold[d|%]]

#####``-l``オプション
切り出した音声の前後に、無音を設けるかどうかを表します。
このオプションをつけると前後に無音区間が設けられます。

#####<font color=DarkRed>above-periods</font>
何回目の音声検出まで切り捨てるか、を指定します。
1を指定すると、先頭から音声が検出されるまでの無音区間が切り捨てられます。[※後述する補足の図１](#図1)

#####<font color=Blue>below-periods</font>
無音区間が何回検出されて以降を切り捨てるか、を指定します。（多分）[※後述する補足の図１](#図1)
通常1を指定します。

#####duration
最短継続時間を指定します。先述したAudacityの「音声から自動ラベル付」の[(2),(3)](#2-何秒以上無音が続いたら区切るのかを指定します)に相当します。

#####threshold
しきい値を指定します。先述したAudacityの「音声から自動ラベル付」の[(1)](#1-どれくらいの音量以下を無音と判断するかを指定します)に相当します。
数値にdをつけるとdBとして扱われ、%をつけると、音声内の最大値に対する割合で扱われます。

---
より詳しい内容については、[こちらのサイト](http://sox.sourceforge.net/sox.html#FILENAMES)をご参照ください。



##音声を正規化する。
音声を正規化するコマンドの例を示します。
```
$ sox --norm hoge.wav hoge_norm.wav
```

``--norm=-3``のように指定すると、-3dBを最大値として正規化します。



##複数ファイルの一括変換
複数ファイルのサンプリングレートを16kHzに一括で変換するコマンドの例を示します。

```shell
$ file_list=`find [音声ファイルがあるフォルダのPath] -name "*.wav" `
$ for f in $file_list; do sox $f -r 16k [出力先のフォルダのPath]/${f##*/}; done
```
一行目は、対象となるファイルのリストを変数に入れています。
バッククォーテーション(`)でコマンドを括ることによって、コマンドの実行結果が代入できます。
findコマンドで、指定したフォルダにの中で(任意の文字).wavに当てはまるファイルを取得しています。

二行目はforループで、ファイルを一つづつ処理しています。
${変数名##*/}は変数に格納されたPathからファイル名だけを取り出す書き方です。

:::note warn
出力先のフォルダは、コマンドを実行する前に作っておいてください。
:::

##補足
silenceエフェクトについてのイメージ画像です。
###図1
![silenceの説明１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/d7b32cbe-93f3-a1e5-f762-96335a97d641.png)

---

###図2
![silenceの説明2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/ee0c687a-5d57-5a32-ad36-199085c3d1af.png)

---

###図3
![silenceの説明３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/ac8c34b2-fc9e-8e47-f22a-94beeb983101.png)

---

###図4
![silenceの説明4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1604294/107984e1-6f6b-b738-b30b-d54603b66141.png)
　
　
　
　
　
　
#おわりに
本記事で説明しきれていない部分は各自で調べていただけると幸いです。