喋るBotを作ってみる


# はじめに

最近の[LINE](https://line.me/ja/)は機能がどんどん充実してきており、よく利用している[IFRO](https://ifro.ai/)で作成していた予約ボットなども簡単に作れちゃったりしてきています

なので、今日はまだ[LINE](https://line.me/ja/)では出来ない「音声を喋るBot」を作成してみようと思い、備忘録がてら久しぶりに記事を書いてみます

[IFRO](https://ifro.ai/)のホームページもいつの間にかリニューアルされていて音声推しになっていました
ページ右下にある吹き出しをクリックした時に表示されるIFRO公式ボットのイプロン君？も喋るようになっていて可愛いw

![スクリーンショット 2022-10-10 16.14.45 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/ad9db47c-3176-a5ae-04fd-38952d4f01d9.png)

# やること
[IFRO](https://ifro.ai/)は音声再生にも対応していて、使い方も慣れてるので今回も使っていこうと思います

音声の作り方についてはドキュメントの[発話モジュール](https://docs.ifro.ai/skill.html#_%E7%99%BA%E8%A9%B1%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB)についての所と[スキルの公開](https://docs.ifro.ai/skill.html#_%E9%9F%B3%E5%A3%B0%E4%BB%98%E3%81%8D%E3%81%A7%E5%85%AC%E9%96%8B)についてのところに凄くサラァァァァァァっと書いてあります

なので、実際に作ってみながら詳しく見ていこうと思います

# プロジェクトの準備

![スクリーンショット 2022-10-11 4.12.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/89c9ab23-da44-421d-2040-51eb932e0631.png)

いつも通り、「+新規スキル」を押して今回のプロジェクトを作ります

![スクリーンショット 2022-10-11 4.14.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/939d880f-aa6c-4e7c-a5d7-d2db37586ece.png)

プロジェクト名をつけます
今回は「**喋るボットマン**」

と、ここでプロパティの下の部分に注目です
![スクリーンショット 2022-10-11 4.14.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/170b09f4-8b2d-8379-b72b-7d325a6c26c7.png)

**デフォルト音声合成設定**という項目を見つけました
なので、これを少し触ってみます

まずは、まさにこの「**THE 音声**」という感じのマークをクリックします
![スクリーンショット 2022-10-11 4.20.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/f2068db6-a246-ae20-3444-769081d1de28.png)

すると、なにやら色々な設定項目が表示されました
![スクリーンショット 2022-10-11 4.20.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/0a68223f-097a-1b66-68ec-7846a922f812.png)

ふむふむ。。。
一通り試して聞いてみたので、説明を記載しておきます

::: note info
感情レベルの隣にあるスピーカーマークを押すことでサンプル音声が再生されます
:::

### 話者
<dl>
    <dt>haruka</dt>
    <dd>タイトルから女性っぽいですが、どちらかというとボットって感じの声です</dd>
    <dt>hikari</dt>
    <dd>harukaより女性をイメージ出来て上品な感じの声になっています</dd>
    <dt>takeru</dt>
    <dd>青年って感じの爽やかなイメージの声です</dd>
    <dt>santa</dt>
    <dd>うぉぉぉ！サンタクロースだぁぁぁ！という感じのまさにサンタクロースをイメージ出来るような声でしたw</dd>
    <dt>bear</dt>
    <dd>これは・・・bear・・・？<br />熊というよりテレビでたまに見るモザイクがかかった人の声に近いような・・・個人的にはちょっと怖いなと思ってしまいましたw</dd>
</dl>

なんか凄く偏ってるなという感じがありましたが、ユースケースを考えているとボット系、女性、男性、語りかける系、別のキャラ系というイメージをすれば均等に扱える声質なのかなとも思えてきました

### 速さ
数字を大きくするほど、話すスピードが速くなります

### ピッチ
数字を大きくするほど、声の高さが高くなります
(bearでやると怖さが増しましたw)

### 音量
単純に音量を調整できます

### 感情
<dl>
    <dt>none</dt>
    <dd>感情が入ってる感じはありませんが普通に聞けますね</dd>
    <dt>happiness</dt>
    <dd>嬉しそうな話し方に聞こえます</dd>
    <dt>anger</dt>
    <dd>怒ってるような話し方に聞こえます</dd>
    <dt>sadness</dt>
    <dd>悲しんでるような話し方に聞こえます</dd>
</dl>

### 感情レベル
1から4までの数値で上記、感情の表現力が高まる感じになっています

:::note warn
4にすると少し極端過ぎる印象になったので、2〜3くらいにして感情の部分でコントロールした方が良さそうです
:::

とりあえず、以下のような設定にしてみました
![スクリーンショット 2022-10-11 4.45.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/9c033754-45ae-a39c-6bbb-12c4c910ac1e.png)

# 実装

準備が出来たので、作ってみようと思います
今回は一旦、「何かご質問はございますか？」という言葉を発話することにします

早速、発話モジュールを配置します
![スクリーンショット 2022-10-11 4.57.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/adbc2121-5d95-23df-4d14-e3f081b5949b.png)

配置した発話モジュールをダブルクリックして発話内容編集モーダルを表示します
そして、発話させる言葉を入力
![スクリーンショット 2022-10-11 4.58.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/27a50f26-64f3-9f83-591f-9c48c5152bcf.png)

ここで、入力した言葉の右端にある「**THE 音声**」マークと「スピーカー」マークを押してみます
![スクリーンショット 2022-10-11 5.00.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/bc3611aa-740e-4e6a-1d15-2a26f03d71c2.png)

+ スピーカーを押すと、**プロジェクトの準備**のところで設定したデフォルトの設定で音声が流れます
+ **THE 音声**を押すと、**プロジェクトの準備**のところで設定したデフォルトの設定のような画面が表示されます
![スクリーンショット 2022-10-11 5.03.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/f897b20f-24c0-50a0-188c-000bcdcd9ae4.png)

デフォルト設定を使用にチェックが入っているので、一旦外してみます

![スクリーンショット 2022-10-11 5.04.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56585/33ed3092-a3c5-e022-e74c-20e068407238.png)

外すと、チェックの下にあるharukaの声で音声が再生されました！
ということで発話モジュール単位でも声質をそれぞれ調整出来ることが分かりました

---
欲を言えば、デフォルトで設定した値がここに入ってると嬉しいですね〜
（デフォルトで設定した話者のまま、微妙にスピードやピッチを変えたり、感情の起伏を表現したいので）

:::note
一応、探したけどデフォルトの値を「ここに持ってくる」みたいなボタンなどもありませんでした
:::

ただ、発話モジュール単位で声質も変えられるってことは、2〜3人登場させてボット漫才なども出来そうです
需要があるかどうかは別ですがw
笑いのセンスがあれば次回記事で作りたいところですが、とりあえずそういったセンスは持ち合わせていませんでした・・・・。。。

[IFROのAPI](https://docs.ifro.ai/api.html)も公開されてるので、ユーザー側の音声入力もアプリなどで制御出来れば完全に対話が実現出来ますね！

とりあえずIFROの音声発話の備忘録として。

# 最後に
音声入力は当たり前になってきているので、ボットも音声発話出来ると色々便利な世の中がさらに便利な世の中になるんじゃないかなと思っている次第です

ちな、下記にイプロンくんのソースコードが公開されていましたので、これを流用していい感じのチャットボットを作ってみるのも良さそうです

https://github.com/Palsbots/ipron-web-client