発声の仕組み
前作の反省を踏まえ改良した発声の仕組みを解説させて頂きます。
- アクション実行時に複数ある音声候補の中からランダムで一つ抽出します。(例:"iya", "dame", "baka", "aho")
- "dame"が選ばれたとします。さらに複数の"dame"があるのでその中から一つ抽出します。"dame03"が選ばれたとします。
- 過去に出力された音声の履歴を6個まで保持しているのでそれを参照して同じ音声"dame03"がなければ出力します。
- 履歴に同じ音声があった場合は1からやり直します。この時点で重複することは殆どないのですが特定回数繰り返しても違う音声が見つからなかったときは履歴の参照を新しい順から一つずつ削除していき、さらに繰り返します。
- 最終的に選択された音声が出力され、それを履歴に記録します。
このようにしてなるべく同じ音声が連続で出ないようにしています。スピーチの場合はこれに加えて各セリフに複数のタグのようなものが設定してあり、着衣の状態などに応じてフィルタリングしています。(とは言えこちらはそれほどボイスの数が多くないので効果的に機能しているとは言い難いのですが。)