即戦力化　ディープラーニング実習（音声合成）

# 【おまけ２】音声合成（txt2speech）

講義目録：<a href="https://qiita.com/takenakayoichi/items/3b7435f4b155a181e39f">即戦力化　ディープラーニング実習 </a>

## はじめに

本記事では、**テキストを音声に変換するAI（音声合成、Text-to-Speech: TTS）** を体験します。

テキストから音声を自動生成するTTS技術は、近年大きく進化しており、  
ナビゲーション音声、アナウンサーの代替、ボイスアシスタント（Siri, Alexa等）など、実生活でも広く使われるようになってきました。

今回も、Hugging Faceで公開されている音声合成モデルを使って、  
**日本語の文章を読み上げる**実習を行います。

Google Colab上で動かすことで、環境構築の負担なく実行できます。  
特に、**AIに「自分の書いたテキスト」を読ませる**という体験は、深層学習の理解を楽しく直感的にしてくれるはずです。

**Google Colabへのリンク**
- [音声合成のcolab](https://colab.research.google.com/drive/1snkbRsX-aTyhX79KcQZjST3MAMAGqgw9?usp=sharing)


---

## 実習の目的

- 日本語の音声合成モデルをGoogle Colabで動かす  
- テキストを自然な音声に変換するTTSモデルの使い方を学ぶ  
- 生成された音声ファイル（WAV形式）をColab上で再生する  
- 音声合成AIの仕組みと応用可能性に触れる

---
## 実習のコード（音声合成：日本語）

それでは、テキストを音声に変換し、WAVファイルとして再生する実習を行いましょう。

google colab で動くコードは次の通りです。

```python
# 1. 音声合成用ライブラリのインストール
!pip install -q --force-reinstall git+https://github.com/myshell-ai/MeloTTS.git
!python -m unidic download
```
google colab の場合、いったんセッションの再起動をし、上記セル（コード）を再実行してください。

再起動しないと、次のセルでエラーが発生してしまいます。

```python
from melo.api import TTS
from IPython.display import Audio

tts = TTS(language="JP", device="auto")  # 初回のみ重みDL
wav = "japanese.wav"
tts.tts_to_file("おはようございます。今日は良い天気ですね。", tts.hps.data.spk2id["JP"], wav)

Audio(wav) 
```
### ✅ 実行結果

上記のコードを実行すると、指定したテキストが読み上げられた音声が再生されます。
生成された音声は output 変数にWAV形式で保存されており、Colab上で直接再生が可能です。

それにしても、なんというか……。日本人離れした日本語発音ですよね。

このあたりはもっと新しく、規模の大きいモデルを使えばよくなります。

### 注意事項
音声の出力にはGPUがあると高速ですが、CPUでも動作可能です。

音声が再生されない場合は、Runtime > Restart and run all を試してください。


## 実習のコード（音声合成：英語）

日本語の次は、英語の音声合成（Text-to-Speech, TTS）を体験しましょう。

アメリカ英語（US）とインド英語（India）の両方で同じ文章を読み上げて、**発音や抑揚の違い**を観察します。


まず、必要なライブラリをインストールし、モデルを読み込みます。

```
!pip install -q --upgrade nltk
import ssl, nltk
ssl._create_default_https_context = ssl._create_unverified_context  # ← Colab 用
nltk.download("punkt")                          # 文分割モデル
nltk.download("averaged_perceptron_tagger_eng") # 品詞タガー（英語用）

english_model  = TTS(language="EN", device="auto")   # ← ここを EN
```
### 2. 英語を米国アクセントで音声合成

続いて、米国アクセントを指定して、音声合成を行います。

発音する文は、**Good morning! How are you today?** にしました。

```米国アクセント
text = "Good morning! How are you today?"
spk_us = english_model.hps.data.spk2id["EN-US"]      # ← American
wav = "en_us.wav"
english_model.tts_to_file(text, spk_us, wav)
Audio(wav)
```

聞き取れましたか？
では、米国英語とインド英語との違いを体験してみましょう。


```インドアクセント
spk_india = english_model.hps.data.spk2id["EN_INDIA"]
wav = "en_india.wav"
english_model.tts_to_file(text, spk_india, wav)
Audio(wav)
```

###  実習結果の比較
- 同じ文でも、話者のアクセント（US vs India）やイントネーションが異なりますね。ディープラーニングの実習だけではなく、英語の知識まで増えました。やったね！

- 実社会では、地域や文化に応じた発話スタイルが求められる場面があり、TTSモデルはそれに対応可能です。

## 補足：音声合成AIの仕組みと応用可能性

音声合成（Text-to-Speech, TTS）は、**文字列（テキスト）を自然な音声に変換する技術**です。  
その裏では、深層学習を用いた複数のモデルが連携し、人間らしい発話を実現しています。

---

### 🔧 音声合成AIの仕組み（典型的な3段階）

TTSシステムは、以下のような段階で動作します：

#### 1. **テキスト前処理（Text Analysis）**
- 入力された文を単語や音素に分解（トークン化）
- アクセント、イントネーション、ポーズなどを文法から推定
- 多くのTTSモデルは、**音素表記（phoneme）** という発音記号に変換して処理します

#### 2. **音響特徴量の生成（Acoustic Modeling）**
- テキストの特徴から、**メルスペクトログラム**などの音響表現を生成
- Tacotron, FastSpeechなどのモデルが使われます
- 感情・話者のスタイル（速さ・高低）もこの段階で学習可能

#### 3. **音声波形の生成（Vocoder）**
- 音響特徴量を、実際の音（波形）に変換する
- WaveNet, HiFi-GAN, VocGAN などの「ボコーダ（vocoder）」と呼ばれるモデルを使用

> 例：今回使用した `facebook/mms-tts-jpn` や `TTS(language="EN")` も、この流れを内部で処理しています。

---

### 🧠 最近のTTSモデルの進化

近年のTTSは、以下のような特徴を備えています：

- **マルチスピーカ対応**：話者ごとの音声を1つのモデルで切り替え可能（例：US英語、インド英語など）
- **エンドツーエンド化**：テキスト→音声までを一つの深層モデルで完結（例：VITS）
- **感情・スタイル制御**：怒り・悲しみ・喜びなどの感情表現も可能に
- **多言語モデル**：1つのモデルで多数の言語をカバー（例：MetaのMMS）

---

## 🔊 音声合成AIの応用可能性

TTSは多くの実社会タスクに応用され始めています。

| 分野           | 応用例                                                                 |
|----------------|------------------------------------------------------------------------|
| 教育           | 読み上げ教材、英語リスニング練習、読み聞かせアプリ                    |
| アシスタント系 | Siri、Alexa、Google Assistant などの会話応答                         |
| 医療           | 音声合成による患者案内、高齢者向けの読み上げ支援                      |
| バリアフリー   | 視覚障がい者への情報提示、駅の自動音声案内                            |
| ゲーム・メディア | キャラクターボイス、ナレーション、YouTubeナビ音声、自動動画生成BGM   |
| 法律・契約文書 | 長文ドキュメントの読み上げによる内容確認（監査・読み聞かせ用途）      |

---

### 🔭 今後の展望

- **感情合成**：話し方や気分を指定して表現の幅を広げる
- **ゼロショット話者合成**：声のサンプル1つで誰でも再現（音声クローン）
- **リアルタイム生成**：ストリーミング処理による会話AIの即時音声応答

音声合成AIは、「テキスト情報を声で伝える」という点で、  
**人とAIのインタフェースとして極めて重要な役割**を担い始めています。

## 🔭 次回予告：

次回【第7週】からは、CNN編へと突入です。

主に自然言語を扱うRNNから、主に画像を扱うCNNの実習を行います。