com.docomostar.opt.ui
クラス SpeechSynthesizer

Object
  上位を拡張 com.docomostar.opt.ui.SpeechSynthesizer
すべての実装されたインタフェース:
com.docomostar.ui.MediaPresenter

public final class SpeechSynthesizer
extends Object
implements com.docomostar.ui.MediaPresenter

ネイティブの音声合成機能にアクセスして、文字列データを音声出力する機能を提供します。

音声出力する文字列を setText(String) メソッドで指定し、 play() メソッドで音声出力を開始します。 音声出力時にユーザ固有の読み方を指定するには、 setRuby(String[][]) メソッドを使用します。

setAttribute(int, int) メソッドより各種属性を設定することで出力音声のボリュームや、 音声合成の動作モード を変更出来ます。 音声合成機能での音声合成の動作モードは、 次の通りです。

setAttribute(int, int) メソッドにより属性の設定が行われていない場合、 音声出力を開始すると次の標準値が指定された状態で出力されます。

属性 標準値
VOLUME 100
PITCH 0
SPEED 0
SPEECH_MODE プレーンモード

音声合成機能と、音声再生を行う他の機能との間でサウンドリソース競合が発生した場合、 先発の再生は停止され、後発の再生要求が実行されます。

音声出力中にアプリケーションがサスペンドした場合は、 stop() メソッドが呼ばれたのと同じ状態になります。

タグモードで利用可能な記号、装飾について
タグモードで音声出力を行う場合、 記号やタグを含んだ文字列を setText(String) メソッドへ指定できます。
指定方法は、以下を参照してください。

文の終端記号(句点)
文の終端記号を使い分けることで、 音声出力される文末のイントネーションを変化させることが出来ます。

記号 利用可能な文字 意味 出力
。 全角のみ 通常の文末 通常のイントネーション
? 全角、半角とも可 疑問の文末 疑問のイントネーション
! 全角、半角とも可 驚きの文末 驚きのイントネーション

タグ
音声出力したい文のうち、 一部の文字列について属性や強弱を変更することが出来ます。
setAttribute(int, int) メソッドで設定した属性は、 setText(String) メソッドで指定した文字列全部に影響しますが、 setText(String) メソッドに指定する文字列にタグを挿入することで、 部分的な変更が可能になります。

例えば、setText(String) メソッドの引数に "<emphasis=+50>こんばんは。" と指定した場合は、 強調を +50 にして "コンバンワ" と音声出力します。

タグ記号は半角英数で、 "<" から ">" の間に次の特殊な修飾を記述して、指定します。
"<" から ">" の間にある半角空白、全角空白、タブは、無視されます。

修飾の表記 内容 指定可能な数値の範囲
<emphasis=数値> <emphasis=数値> 以降に表記されている文字列を強調して出力します。
次の emphasis 設定、または <clear> があるまで有効です。
単に <emphasis> と記述した場合は、 <emphasis=0> と記述した場合と同様に振る舞います。
-100(弱く) 〜 0(初期値) 〜 +100(強く)
<pitch=数値> <pitch=数値> 以降に表記されている文字列のピッチを変更して出力します。
次の pitch 設定、または <clear> があるまで有効です。
単に <pitch>と記述した場合は、 <pitch=0> と記述した場合と同様に振る舞います。
setAttribute(int, int) メソッドにより ピッチを示す属性 を指定している場合は、 既に指定されている値にこの数値を加算し、有効範囲でクリップした結果を実際の設定値とします。
-100(低く) 〜 0(初期値) 〜 +100(高く)
<rate=数値> <rate=数値> 以降に表記されている文字列の再生速度を変更して出力します。
次の rate 設定、または <clear> があるまで有効です。
単に <rate>と記述した場合は、 <rate=0> と記述した場合と同様に振る舞います。
setAttribute(int, int) メソッドにより 再生速度を示す属性 を指定している場合は、 既に指定されている値にこの数値を加算し、有効範囲でクリップした結果を実際の設定値とします。
-100(遅く) 〜 0(初期値) 〜 +100(早く)
<volume=数値> <volume=数値> 以降に表記されている文字列のボリュームを変更して出力します。
次の volume 設定、または <clear> があるまで有効です。
単に <volume>と記述した場合は、 <volume=100> と記述した場合と同様に振る舞います。
setAttribute(int, int) メソッドにより ボリュームを示す属性 を指定している場合は、 既に指定されている値にこの数値を乗算し、100で割った結果を実際の設定値とします。
0(無音) 〜 +100(初期値)
<clear> <clear> より前に表記されている装飾をクリアにします。
<emphasis=0> 、 <pitch=0> 、 <rate=0> 、 <volume=100> が設定された状態になります。
<break=数値> 挿入された箇所で、 数値に指定された長さを無音で出力します。
数値の単位は ms (ミリ秒) 、分解能は 100ms 、100 未満は切り捨てとなります。
0(なし) 〜 +10000(長く)

数値の前に "+" 、"-" が無い場合は、"+数値" として扱います。

有効なタグ以外は、文章として扱い音声出力を行います。有効なタグとみなされないのは、次の場合です。

なお、プレーンモードにおいて、 記号やタグを含んだ文字列を setText(String) へ指定すると、 記号やタグはそのまま音声出力されます。
"明日は<break=500>雨です。"と指定した場合は、 "アスワブレークイコールゴヒャクアメデス"のように音声出力します。

導入されたバージョン:
Star-1.5 (2011年春以降発売モデル)

フィールドの概要
static int PITCH
           ピッチを示す属性です(=2)。
static int SPEECH_COMPLETE
           音声出力が終了したことを示すイベントタイプです(=3)。
static int SPEECH_MODE
           音声合成の動作モードを示す属性です(=4)。
static int SPEECH_MODE_PLANE
           音声合成の動作モードの属性値で、 プレーンモードを表します(=0)。
static int SPEECH_MODE_TAG
           音声合成の動作モードの属性値で、 タグモードを表します(=1)。
static int SPEECH_PLAYING
           音声出力が開始されたことを示すイベントタイプです(=1)。
static int SPEECH_STOPPED
           音声出力が中断されたことを示すイベントタイプです(=2)。
static int SPEED
           再生速度を示す属性です(=3)。
static int VOLUME
           ボリュームを示す属性です(=1)。
 
メソッドの概要
static int getAvailableBytes()
           音声出力する文字列データに設定できる最大バイト数を取得します。
static int getAvailableRubyLength()
           ルビ情報として登録できる最大のデータ数を取得します。
static String getEncode()
           ネイティブの音声合成機能が対応している文字エンコードを取得します。
 com.docomostar.media.MediaResource getMediaResource()
           このクラスのインスタンスに対して呼び出すことはできません。
static SpeechSynthesizer getSpeechSynthesizer()
           SpeechSynthesizer オブジェクトを取得します。
 boolean isAvailableRuby(String text, String speech)
           引数で指定したルビ情報が有効かどうかを判定します。
 void play()
           音声出力を開始します。
 void setAttribute(int attr, int value)
           音声出力方法に関する属性値を設定します。
 void setMediaListener(com.docomostar.ui.MediaListener listener)
           リスナを設定します。
 void setRuby(String[][] data)
           ルビ情報を設定します。
 void setText(String textData)
           音声出力する文字列データを設定します。
 void stop()
           音声出力を停止します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

SPEECH_PLAYING

public static final int SPEECH_PLAYING

音声出力が開始されたことを示すイベントタイプです(=1)。

関連項目:
定数フィールド値

SPEECH_STOPPED

public static final int SPEECH_STOPPED

音声出力が中断されたことを示すイベントタイプです(=2)。

関連項目:
定数フィールド値

SPEECH_COMPLETE

public static final int SPEECH_COMPLETE

音声出力が終了したことを示すイベントタイプです(=3)。

関連項目:
定数フィールド値

VOLUME

public static final int VOLUME

ボリュームを示す属性です(=1)。

属性の値には、iアプリの音量設定値から何%の音量を出力するかを指定します。 指定できる範囲は、0 〜 100 ( 0 は無音で、 100 が基準) です。

このボリュームの設定は、音声合成機能に対してのみ影響を及ぼします。 AudioPresenter.SET_VOLUME や Player.DEV_VOLUME で設定するボリュームとは独立しており、 互いに影響を与えることはありません。

関連項目:
setAttribute(int, int), 定数フィールド値

PITCH

public static final int PITCH

ピッチを示す属性です(=2)。

属性の値には、 -100(低く) 〜 0(基準) 〜 100(高く) を指定します。

関連項目:
setAttribute(int, int), 定数フィールド値

SPEED

public static final int SPEED

再生速度を示す属性です(=3)。

属性の値に -100(遅く) 〜 0(基準) 〜 100(早く) を指定することで、 再生速度の操作を行います。

関連項目:
setAttribute(int, int), 定数フィールド値

SPEECH_MODE

public static final int SPEECH_MODE

音声合成の動作モードを示す属性です(=4)。

関連項目:
setAttribute(int, int), 定数フィールド値

SPEECH_MODE_PLANE

public static final int SPEECH_MODE_PLANE

音声合成の動作モードの属性値で、 プレーンモードを表します(=0)。

関連項目:
setAttribute(int, int), SPEECH_MODE, 定数フィールド値

SPEECH_MODE_TAG

public static final int SPEECH_MODE_TAG

音声合成の動作モードの属性値で、 タグモードを表します(=1)。

関連項目:
setAttribute(int, int), SPEECH_MODE, 定数フィールド値
メソッドの詳細

getSpeechSynthesizer

public static SpeechSynthesizer getSpeechSynthesizer()

SpeechSynthesizer オブジェクトを取得します。

このメソッドによって得られたオブジェクトには、 MediaSound を設定することはできませんが、 文字列データを設定し play() メソッドを呼び出すことで文字列データの音声出力が行えます。

音声合成機能同士は、同時利用出来ません。 そのため、このメソッドを複数回呼び出した場合は、 常に同じオブジェクトへの参照を返します。

例外:
com.docomostar.lang.UnsupportedOperationException -
この端末が音声合成機能をサポートしていない場合に発生します。

getMediaResource

public com.docomostar.media.MediaResource getMediaResource()

このクラスのインスタンスに対して呼び出すことはできません。
このメソッドを呼び出すと、常に UnsupportedOperationException が発生します。

定義:
インタフェース com.docomostar.ui.MediaPresenter 内の getMediaResource
戻り値:
常に例外が発生するため、戻り値はありません。
例外:
com.docomostar.lang.UnsupportedOperationException -
このメソッドが呼ばれた場合に発生します。

setMediaListener

public void setMediaListener(com.docomostar.ui.MediaListener listener)

リスナを設定します。
設定できるリスナは1つだけです。 このメソッドを複数回呼出した場合、最後に登録したリスナだけが有効です。
引数 listener に null を指定すると、設定されているリスナを解除します。

定義:
インタフェース com.docomostar.ui.MediaPresenter 内の setMediaListener
パラメータ:
listener - 設定するリスナオブジェクトを指定します。

play

public void play()

音声出力を開始します。

音声出力が開始された時にリスナが登録されていた場合、 イベントタイプ SPEECH_PLAYING でリスナが起動されます。 データを最後まで出力したら自動的に停止します。停止したとき、 リスナが登録されていた場合、イベントタイプ SPEECH_COMPLETE でリスナが 起動されます。

ルビ情報が設定されていた場合、 その設定を優先して音声出力を行います。

音声出力中に play メソッドが呼ばれた場合の振る舞いは、機種依存です。

定義:
インタフェース com.docomostar.ui.MediaPresenter 内の play
例外:
com.docomostar.ui.UIException -
(ILLEGAL_STATE)
文字列データがセットされていない場合に発生します 。
com.docomostar.ui.UIException -
(NO_RESOURCES)
音声出力のためのリソースが確保できない場合に発生します。
com.docomostar.ui.UIException -
(ILLEGAL_STATE)
ネイティブ側で再生開始に失敗した場合に発生します。
com.docomostar.ui.UIException -
(BUSY_RESOURCE)
音声・テレビ電話通話中に呼び出された場合に発生します。

stop

public void stop()

音声出力を停止します。
音声出力が停止された時にリスナが設定されていた場合、イベントタイプ SPEECH_STOPPED でリスナが起動されます。

停止している時に stop() メソッドが呼ばれた場合、何もしません。

定義:
インタフェース com.docomostar.ui.MediaPresenter 内の stop

setAttribute

public void setAttribute(int attr,
                         int value)

音声出力方法に関する属性値を設定します。
制御可能ではない属性、存在しない属性が指定された場合は何も行わずに無視されます。
設定した値は、 play() メソッドが呼ばれた時点で反映されます。 音声出力中にこのメソッドを呼び出した場合、 反映されるのは次の play() メソッド呼び出し時となります。

定義:
インタフェース com.docomostar.ui.MediaPresenter 内の setAttribute
パラメータ:
attr - 設定する属性を指定します。
value - 設定する属性の値を指定します。
関連項目:
VOLUME, PITCH, SPEED, SPEECH_MODE
例外:
IllegalArgumentException -
引数 attr で指定された有効な属性に対して、引数 value に不正な値が指定された場合に発生します。

setText

public void setText(String textData)

音声出力する文字列データを設定します。

音声出力する文字列データは、 getAvailableBytes() で取得できるバイト数以下でなければなりません。 バイト数は、 getEncode() で取得できるエンコーディングで評価します。

引数に設定した文字列は、 play() メソッドが呼ばれた時点で反映されます。 反映後は、文字列データがセットされていない状態になります。 音声出力中にこのメソッドを呼び出した場合、 反映されるのは次の play() メソッド呼び出し時となります。

引数に指定した文字列データが正しく音声出力できるかどうかについては、端末に依存します。
音声出力が出来ない文字が引数の文字列に含まれていた場合、振る舞いは機種依存です。
改行のみの行は、100 ms (ミリ秒) の長さの無音として音声出力されます。

パラメータ:
textData - 文字列データを設定します。
例外:
NullPointerException -
引数 textData に null が指定された場合に発生します。
IllegalArgumentException -
設定可能なバイト数を超える文字列データが設定された場合に発生します。

getAvailableBytes

public static int getAvailableBytes()

音声出力する文字列データに設定できる最大バイト数を取得します。

設定できるバイト数は端末に依存します。

戻り値:
音声出力する文字列データに設定できる最大バイト数を返します。
関連項目:
setText(String), getEncode()
例外:
com.docomostar.lang.UnsupportedOperationException -
この端末が音声合成機能をサポートしていない場合に発生します。

getEncode

public static String getEncode()

ネイティブの音声合成機能が対応している文字エンコードを取得します。

戻り値:
ネイティブの音声合成機能が対応している文字エンコードを返します。
関連項目:
setText(String), getAvailableBytes()
例外:
com.docomostar.lang.UnsupportedOperationException -
この端末が音声合成機能をサポートしていない場合に発生します。

setRuby

public void setRuby(String[][] data)

ルビ情報を設定します。 ルビ情報は音声出力時にユーザ固有の読み方を指定するために使用します。

引数 には、以下の例のように「表記」と「読み」を二次元配列で指定します。

 String[][] data = {{"今日", "コンニチ"}, {"明日", "アス"}};
 

第 2 次元において、 第 1 要素に表記を、 第 2 要素には読みを指定します。 また、第 3 要素以降に値が指定された場合、指定された値は無視されます。

ルビ情報の「表記」と「読み」が有効かどうかは isAvailableRuby(String, String) で確認できます。 ルビ情報の「表記」「読み」に使用できる文字種については isAvailableRuby(String, String) を参照してください。

同じ表記で異なる読みが登録された場合、 後発(第 1 次元の添字の値が大きいもの) がルビ情報として登録されます。

引数 data に null を指定した場合は、 ルビ情報が何も設定されていない状態になります。 ルビ情報として指定できるデータ数、 すなわち、 data の配列長は、 1 以上、 かつ getAvailableRubyLength()で取得できる値以下でなければなりません。

このメソッドを複数回呼び出した場合は、 最後に設定した値が有効になります。

指定されたルビ情報は、 play() メソッドが呼ばれた時点で反映されます。 反映後は、ルビ情報が何も設定されていない状態になります。

パラメータ:
data - ルビ情報を指定します。
例外:
IllegalArgumentException -
引数 data に有効ではないルビ情報が含まれている場合に発生します。
IllegalArgumentException -
引数 data のサイズが 0 、または端末のサポートするデータ数を超えている場合に発生します。
com.docomostar.ui.UIException -
(ILLEGAL_STATE)
音声出力中にこのメソッドを呼び出した場合に発生します。

isAvailableRuby

public boolean isAvailableRuby(String text,
                               String speech)

引数で指定したルビ情報が有効かどうかを判定します。

ルビ情報を設定する前に、 ルビ情報の「表記」と「読み」が有効であるかを確認できます。

引数 text にはルビ情報の表記を指定してください。 使用可能な文字は、機種依存です。 text に null 、 もしくは空文字列を指定した場合は false を返します。

引数 speech にはルビ情報の読みを指定してください。 speech に使用可能な文字は 全角カタカナ、全角スペースです。 ただし、全角スペースは発音しない文字として扱われます。 また、 speech に null 、 もしくは空文字列を指定した場合は、 無音を指定したものとして扱われます。
全角カタカナ、全角スペース以外の文字が speech に含まれていた場合は false を返します。

パラメータ:
text - ルビ情報の表記を指定します。
speech - ルビ情報の読みを指定します。
戻り値:
ルビ情報が有効な場合は true 、 それ以外は false を返します。
例外:
com.docomostar.ui.UIException -
(ILLEGAL_STATE)
音声出力中にこのメソッドを呼び出した場合に発生します。

getAvailableRubyLength

public static int getAvailableRubyLength()

ルビ情報として登録できる最大のデータ数を取得します。

設定できるデータ数は端末に依存します。

戻り値:
ルビ情報に設定できる最大のデータ数を返します。
関連項目:
setRuby(String[][])
例外:
com.docomostar.lang.UnsupportedOperationException -
この端末が音声合成機能をサポートしていない場合に発生します。


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。