CRIWARE を使って Text-to-Speech !? CRI Text Speaker のご紹介!
どうも!皆さん元気してますかー!? CRI の日置でーす!!!
お久しぶりの方はお久しぶりです!そうでない方は初めましてえぇェ…ッ!!
やっと梅雨入りということで、ジメジメした空気にやられて鬱屈とした気持ちになるかもしれませんが、酒を呑んでカバーしていきましょう!うーん、ビール!!
はてさて、今回はどんな記事かというと…題の通り、CRIWARE を使って Text-to-Speech をやります!
そもそも Text-to-Speech とはなんぞや…?
「ちょ待てよ!いきなりそんな知らない単語を出されても…」と思われている方もいらっしゃる気がするので、ほんの少しだけ解説します。
Text-to-Speech とはテキストを元に音声を合成する技術のことです!
略して TTS とも言われています!
※「音声合成まで」ではなく、「音声の再生まで」を含むこともあります。
とてつもなく簡単に言ってしまえば、文字や文章の読み上げ機能です!
動作イメージとしては以下のような感じ!
この技術を活用した製品としては、 VOICEROID だったり VOICEVOX だったりと色々あります。
今この記事を読んでいる皆さんも、 YouTube などの動画配信サービスで、これらの製品を使用した音声を聴いたことがあるのではないでしょうか?僕はめっちゃあります!!
もっと身近なものだと、 Apple の Siri や Google の Google アシスタント でもこの技術を活用していますね。
このように、我々の日常に気が付けば当たり前のように溶け込んでいるこの技術、当然の如くゲームにも関連があるんですよね。
というか!ゲーム自体に!!この技術が!!!使われているケースが!!!!あります!!!!!昔から!!!!!!
とあるときめくようなゲームでは、自分が任意で設定した名前を読み上げてくれる機能とかありましたよね?
他にも野球や競馬などの実況が付くようなゲームでも、同様な機能が存在しています。
その他、実際にゲームで活用した事例として、 CEDEC で発表されているケースが幾つか散見されています。
気になった方は、是非 CEDiL から過去セッションの内容を確認してみてくださいね。(音声合成などで検索すると色々出てくるかも…?)
今!色んなゲームで Text-to-Speech が求められている!?
Text-to-Speech について、皆さん、なんとなーく理解できたと思います。
この Text-to-Speech 、実は今めっちゃ求められています!
………いやいや待て待て…。
「この技術を利用するケースって、割と限られてない?」って思いますよね?
というか、前節にて紹介した利用ケースを前提にすると、「ゲームのクオリティアップに求められているの?」というニュアンスで受け取ってしまったかもしれません…。
実はそうではなく、アクセシビリティへの対応機能の一つとして、今まさに求められているのです!
アクセシビリティとは、「利用のし易さ」転じて「どんな人でも利用できること」をしばしば指します。
ゲームにおいても、このアクセシビリティへの対応が求められています。
こと米国においては、 Twenty-First Century Communications and Video Accessibility Act of 2010 (通称 CVAA 法) という法律にて、具体的にどのような対応を行わなければならないかを規定しています。
皆さんもゲームの設定とかで、色覚補正や表示文字サイズの大きさ変更などの設定項目を目にしたことがあるのではないでしょうか?これらもすべてアクセシビリティ対応に該当する機能です。
ゲーム自身だけでなく、プラットフォーム自身がアクセシビリティ機能を提供しているケースもあります。
例えば、 iPhone では以下のようなアクセシビリティ設定があります。
こちらを見てもらえば、アクセシビリティ対応においては様々な機能が求められていることが分かると思います。
その中でも、今回取り上げている Text-to-Speech による読み上げ機能は、目が不自由な方にとって非常に有用な機能となっています。
今は様々なゲームが海外対応を行っており、当然米国もターゲットの一つです。
その米国でゲームを展開するためには CVAA 法に則った対応が必要となります。
「じゃあ逆に日本は今そこらへんどうなの?」と、疑問が生じたかもしれません。
米国の CVAA 法対応に類似する動きとして、「障害者差別解消法の改正」があります。
この法改正では、民間事業者における合理的配慮の提供が義務化されています。
「合理的配慮の提供」を達成するために、アクセシビリティ対応が各企業で進められている状況です。
このような国内の流れからして、ゲームにおけるアクセシビリティ対応の必要性というものが高まってくると考えられますね。
ふぅ…つい熱くなって、今日の夢に出てくるくらい「アクセシビリティ」という言葉を浴びせてしまいましたね…失敬失敬…。
閑話休題!そんなアクセシビリティへの対応に欠かせない Text-to-Speech ですが、なんと CRIWARE でも使用することが出来るようになりました!!!
その名も CRI Text Speaker です!
CRI Text Speaker 爆誕
CRI Text Speaker は名前の通り、入力したテキスト内容をそのまま読み上げてくれる機能をサポートしています!
単純に読み上げるだけではなく、以下のような基本的な機能も合わせてサポートしています。
- 読み上げ速度の変更
- 音量の調整
- 読み上げの一時停止・再開 etc.
サポートしているプラットフォームはもちろん全機種!
ネイティブ環境はもちろんのこと、 Unity や Unreal Engine といったゲームエンジンにもしっかりと対応しました!
実際に CRI Text Speaker を使ってみた
というわけで、今回は特別に Unity での使い方を簡単にご紹介します!
まずは CRIWARE Unity Plug-in をプロジェクトに導入します!導入方法については割愛します!!
そもそもこの記事を読んでて導入したことがないやついる?いねえよなぁ!!?
……もしいたら本当にゴメンナサイ…。
こちらのマニュアルに導入方法が記載されているので、参考にして導入してみてくださいね。
CRIWARE Unity Plug-in を導入したら、次に CRI Text Speaker を導入しますよ!
Unity プロジェクトへの追加方法は至って簡単!
Unity パッケージ形式でまとめているので、パッケージをインポートするだけでプロジェクトにプラグイン一式が追加されます。
コード修正に向けた準備は万端!覚悟はいいか?俺はできてる。
というわけで、実際にコードを書いて、 CRI Text Speaker に入力したテキストを読み上げてもらいましょう!
まずは CRI Text Speaker プラグインを使えるように初期化を行います。
CriTextSpeakerPlugin.PreInitializeLibrary(); CriTextSpeaker.SetDefaultLibraryConfig(out var config); CriTextSpeaker.InitializeLibrary(config);
次に CriTextSpeaker のインスタンスを生成します。
CriTextSpeaker.SetDefaultConfig(out var config); CriTextSpeaker speaker = new CriTextSpeaker(config);
この生成したインスタンスから、テキストの再生を行うことが出来ます。
テキストを入力して実行するだけなので、ものすごく簡単ですね!
string text = "Hello, world!" speaker.SpeakText(text);
プラグインの終了処理としては、以下を行うだけで OK です。
CriTextSpeakerPlugin.PreFinalizeLibrary(); CriTextSpeaker.FinalizeLibrary();
というわけで、ちゃんとアプリケーションとして整えて、実際に動かしてみた動画がこちら!
どや!いかがでしたか?!
軽く解説した通り、ちょちょっとコードを書くだけで簡単に再生まで行えるプラグインとなっています!
CRI ADX との連携
CRI Text Speaker は、音声の再生になんとあの例のサウンドミドルウェア、 CRI ADX を使っています!
「つまり…どういうことだってばよ?」となってしまったそこのあなた!
これが何を示すのかというと…つまり、 CRI ADX の機能と連携ができるということを示しているんだよ!!(ナ、ナンダッテー!?
音声の再生処理には、皆さん大好き CriAtomExPlayer を使用しています。
そのため、バスセンド設定を行えばエフェクトを掛けることが出来ます!
その他、カテゴリの設定を行えば、 REACT を利用したダッキングだって出来ちゃいます!ヒューッ!かっこいい!!
開発現場での活用方法
ゲームでの利用だけが CRI Text Speaker の主戦場じゃないのかも…?
ということで、開発現場での活用例の一つとして、試しにエラーの読み上げというのも実装してみました!
「ログを逐一確認できない」・「コンソールにログが出せない」…そんなとてもつらい状況を打破する解決策としてアリかも…?
こちらはあくまでも一例で、「そういう使い方もあるのか」程度に思ってもらえれば幸いです。
次に CRI Text Speaker の活用方法を考えるのは、今この記事を読んでいるそこの君だッ!!!
本記事のまとめ
まずはここまで読んでいただき、誠にありがとうございます!
「いや、まとめが知りたくてすっ飛ばしてきたが?」というせっかちな人のためにも、これまでのことを簡潔にまとめます!
- CRI Text Speaker という Text-to-Speech をサポートした製品を開発しました!
- Text-to-Speech はいわゆるテキストの読み上げ機能のことです
- 様々なプラットフォームに対応し、ゲームエンジンでも使用することができます
- CRI ADX で音声の再生を行っているため、 CRI ADX が持つ機能も使えます!
というわけで、ここまで CRI Text Speaker の良いところをいっぱい挙げてきました!
ただ、まだまだ課題もあるのが現実です…。
- 現状は英語の読み上げしか対応していない
- 読み上げを行う音声の性別・年齢などの声質に関する属性を変更することができない
- ソフトウェア処理での音声合成にしか対応していない
そのため、今挙げた課題を今後改善できるように、研究開発を続けていきます!
また、今回は Text-to-Speech を題材にしましたが、音声からテキストに書き起こす Speech-to-Text も秘密裏に対応を進めていますよ…ふふふ…ッ!
「 CRI Text Speaker に興味が湧いた!使ってみたい!」という方は是非こちらにお問い合わせください!評価版パッケージをお渡します!
もちろん動作サンプルも完備!本記事の途中で見せたあの動画のプロジェクト一式も同梱されていますよ!
そして、「でもお高いんでしょう…?」と思っている方、安心してください…既に CRI ADX をご利用いただいている方ならなんと無料です!!
さて、とても名残惜しいのですが、本記事はここまでとさせていただきます。
また別の記事でお会いしましょう!グッバイ!!