SpeakItemコマンド
コンポーネントのspeechプロパティで指定されたコンテンツを読み上げます。コンポーネントが表示されていない場合は、表示されるようにスクロールやページの移動が行われます。
プロパティ
SpeakItemコマンドには、共通のコマンドプロパティに加えて、以下の表に示すプロパティがあります。typeプロパティはSpeakItemに設定します。
コマンドを実行するために値が必要なプロパティの場合、以下の表の「デフォルト」列に「必須」と表示されています。それ以外の場合はデフォルト値が表示されますが、デフォルト値がないこともあります。
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
|
|
スクロール後の項目の配置です。デフォルトは「visible」です。 |
|
|
|
読み込むコンポーネントです。 | |
|
|
|
block |
karaokeの適用方法です。行ごとまたはブロック全体に適用します。デフォルトは「block」です。 |
|
|
整数 |
0 |
項目をハイライトする最小時間(ミリ秒)です。 |
以下は、1つのTextコンポーネントのコンテンツを読み上げ、テキストを画面に中央揃えするSpeakItemコマンドの例です。
{
"type": "SpeakItem",
"componentId": "myJokeSetup",
"highlightMode": "line",
"align": "center"
}
SpeakItemコマンドは、高速モードでは無視されます。
align
スクロール後かつ発話前の画面における項目の配置です。配置の列挙値には次のオプションがあります。
| 配置 | 説明 |
|---|---|
| first | 項目の左上がスクロールコンテナーの左上に配置されます。 |
| center | 項目の中央がコンテナーの中央に配置されます。 |
| last | 項目の右下がスクロールコンテナーの右下に配置されます。 |
| visible | 項目全体を表示するのに必要な分だけ移動します。 |
componentId
読み込むコンポーネントを識別するセレクターです。指定しない場合は、デフォルトで:sourceになります。:sourceセレクターは、SpeakItemコマンドを発行したコンポーネントをターゲットにします。
highlightMode
Textコンポーネントのコンテンツをスタイル設定する方法を制御します。blockに設定すると、発話中にTextコンポーネント全体のkaraoke状態の設定がtrueになります。highlightModeを「line」に設定すると、Textコンポーネントの各行が個別に処理されます。各行は、alignプロパティに合わせてスクロールされ、個別にスタイル設定されます。
行ごとのkaraokeモードでは、スタイル設定の変更ができるのはcolorプロパティだけです。ほかのプロパティは無視されます。
Textコンポーネント以外のコンポーネントがSpeakItemの受け取り側となる場合、highlightModeは無視されます。
minimumDwellTime
項目をハイライトする最低限の時間(ミリ秒)です。
環境が音声をサポートしていることを確認する
環境によっては、音声などのダイアログは使用できません。環境プロパティのdisallowDialogを使って、デバイスと設定が音声関連のコマンドをサポートしているかどうかを判断します。
たとえば、ウィジェットはSpeakItemコマンドをサポートしていません。
コンポーネントにspeechプロパティを設定する
コンポーネントのspeechプロパティをスピーチ音声に変換するtransformerの出力に設定します。たとえば、ssmlToSpeech、textToSpeech、aplAudioToSpeechなどのトランスフォーマーです。
コンポーネントにspeechプロパティがない場合、SpeakItemコマンドはコンポーネントをスクロールして表示しますが、スピーチ音声のレンダリングは行いません。
SpeakItemとkaraoke
SpeakItemコマンドは、コンポーネントのkaraoke状態を発話中にtrueに設定し、発話終了後にfalseに戻します。スタイルでコンポーネントのkaraoke状態を使用すると、発話中のコンポーネントの視覚的外観を変更できます。
highlightModeプロパティはTextコンポーネントに適用されます。AlexaがTextコンポーネントを"highlightMode": "line"モードで読み上げるとき、テキストの各行は発話中にkaraoke状態に設定され、発話終了後にfalseに再設定されます。
以下の制限事項が適用されます。
SpeakItemコマンドは、blockモードで発話中はコンテンツをスクロールしません。たとえば、コンポーネントがコンポーネントのスクロールコンテナーより大きい場合、スクロールした後でも見えないコンテナーからはみ出した部分は、隠れたままになります。- 円形画面ではコンポーネントを中央揃えにする必要があります。そうしない場合、表示されないコンテンツの部分が多くなってしまいます。
SpeakItemは、highlightModeがblockの場合、発話中はテキストの個々の単語や行をハイライトしません。- 項目をスクロールして表示するのに使用するアルゴリズムは、スクロールするコンポーネントが1つのみであることを想定しています。入れ子構造のコンポーネントには対応していません。
speechプロパティのないコンポーネントもスクロールして表示しますが、スピーチ音声のレンダリングは行いません。SpeakItemは、タブレットの向きを切り替えるなど、設定の変更中には停止します。
SpeakItemコマンドが早期停止すると、視覚的な変更はすべて消去され、音声がすぐに停止されます。
再インフレート時の処理方針
Reinflateコマンドを実行すると、Alexaがドキュメントを再インフレートした後でSpeakItemコマンドを再開できます。コマンドは、ReinflateのpreservedSequencers配列で指定されたsequencerで実行されている場合に再開されます。このシナリオでは、Reinflateコマンドはオーディオ再生を中断しません。このコマンドでは、ターゲットコンポーネントが保存されます。
ターゲットコンポーネントが再インフレートされた階層内にない場合、オーディオは停止し、コマンドは無視されます。
ターゲットコンポーネントが再インフレートされた階層内にある場合、再インフレート後に次の処理が行われます。
- コンポーネントがスクロールして表示されます。
- コンポーネントの
karaoke状態がtrueに更新されます。 - 1行ずつのハイライトがすべて再開されます。
関連トピック
最終更新日: 2025 年 12 月 12 日