• 検索結果がありません。

音声合成との連携機能の設計

5 音声合成との連携機能

5.2 音声合成との連携機能の設計

前節で述べた要求に対する設計方針に関して述べる。

32

「CaPPTioner」音声合成機能は、セルフモードで文単位の字幕表示をしつつ講演する 時だけ利用可能とする。理由としては、研究発表会で補助者がいる場合、発話が困難な 聴覚障害者が講演者として手話や字幕の形式で講演して、補助者が通訳として発話する 事もできるためである。

音声合成機能は補助者がいない場合を想定しており、発話が困難な聴覚障害者が合成 音声機能を利用して発話するためである。また、合成音声機能を利用して講演するので、

段落やページ単位では聴講者が聞き取りにくいと考え、文単位での表示を行う場合のみ の使用とする。

5.2.1 表示する文を音声合成で発声できる

「CaPPTioner」の音声合成機能では、Windowsに搭載された音声合成機能を利用す る。

Windows アプリケーションで音声認識や音声合成を使うためにマイクロソフトが開

発したAPIである、Speech Application Programming Interface(Speech API、SAPI)

[12] [13]を使用する。SAPI は自由に再配布可能なコンポーネントであり、SAPIを使用

するアプリケーションに同梱することが可能である。SAPIは、.NET Framework3.0が インストールされているMicrosoft Windows XP以降のWindows OSで利用可能である。

SAPI は言わば、アプリケーションと音声合成エンジンの間のインターフェースある いはミドルウェアである。アプリケーションは直接エンジンとやり取りできるが、エン ジンのメソッドを直接呼び出す代わりに単純化された高レベルのオブジェクトを使うこ ともできる。音声合成機能に関するクラスが表5-1である。

表 5-1:音声合成機能に関するクラス System.Speech のSystem.Speech.Synthesis 名前空間

SpeechSynthesizer インストールされている音声複合エンジンの機能へのアク

セスを提供するクラス

VoiceInfo インストールされた音声合成エンジンを表すクラス

SpeakAsync オブジェクトから非同期で出力される音声を生成するメソ

ッド

5.2.2 発声終了が講演者に知覚できる

発声終了が講演者に知覚できるようにするには、様々な方法が考えられる。

(1) 字幕スクリーン上に表示させる

話している音声が終わる時点で、字幕スクリーン上である画面部品が点滅する。この 方法は、専用の画面部品を用意する必要がある。

33 (2) 発声終了時点で字幕に特殊マークを表示する

文の表示と同時に発声し、発声終了時に、特殊な記号を表示する方法を考えた。しか し、文単位で字幕を表示する時、単位毎にマークを付けることが、字幕を見にくくなる 可能性が高い。

(3) 字幕の表示方法を変える

表示の最小単位は文であるが、字幕の表示方法を変更して、音声の終わりを表示でき るようにする。例えば、「明日は、いい天気です。」と発声する時、まず「明日は、いい 天気です」のみを表示して、発声終了時に句点「。」を表示する方法が考えられる。

しかし、ノートには、句点がついていない文があると考え、句点の表示により音声の 終わりを判断させる方法は確実ではない。従って、字幕の表示方法を変えることで発声 終了を知覚するなら、より明確な表示方法を工夫しなければならない。

以上の考えを踏まえて調査したところ、SAPIにはSpeechSynthesizer.SpeakProgress イベントがあり、音声合成メソッドSpeak( )あるいはSpeakAsync( )で渡された文字列 が、今どの部分の文字列を発声しているのかを通知することができる。

イベントで渡される SpeakProgress.EventArgs.Text を受信し、4.3 節で説明した captionManager.Append( )メソッドを使用すれば、部分文字列単位で表示することで、

発話と同期して文字が表示できる。そうすると、発話終了が文章の表示終了によって知 覚できる。図5-1では、時間遷移と共に、字幕を送り出すイメージである。

図 5-1:部分文字列で字幕を出すイメージ図

テストプログラムで試したところ、発声しない部分文字列はSpeakProgress( )では通 知されないことが分かった。そのため、「明日は、いい天気です。」を発声させ、

SpeakAsync( )で渡される部分文字列をつなぎ合わせても、「明日はいい天気です」にし

かならない。これについては、実装上の対策が別途必要である。

34

関連したドキュメント