SpeakItemコマンド


SpeakItemコマンド

コンポーネントのspeechプロパティで指定されたコンテンツを読み上げます。コンポーネントが表示されていない場合は、表示されるようにスクロールやページの移動が行われます。

プロパティ

SpeakItemコマンドには、共通のコマンドプロパティに加えて、以下の表に示すプロパティがあります。typeプロパティはSpeakItemに設定します。

コマンドを実行するために値が必要なプロパティの場合、以下の表の「デフォルト」列に「必須」と表示されています。それ以外の場合はデフォルト値が表示されますが、デフォルト値がないこともあります。

プロパティ デフォルト 説明

align

firstlastcentervisible

visible

スクロール後の項目の配置です。デフォルトは「visible」です。

componentId

セレクター

:source

読み込むコンポーネントです。

highlightMode

lineblock

block

karaokeの適用方法です。行ごとまたはブロック全体に適用します。デフォルトは「block」です。

minimumDwellTime

整数

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の出力に設定します。たとえば、ssmlToSpeechtextToSpeechaplAudioToSpeechなどのトランスフォーマーです。

コンポーネントにspeechプロパティがない場合、SpeakItemコマンドはコンポーネントをスクロールして表示しますが、スピーチ音声のレンダリングは行いません。

SpeakItemとkaraoke

SpeakItemコマンドは、コンポーネントのkaraoke状態を発話中にtrueに設定し、発話終了後にfalseに戻します。スタイルでコンポーネントのkaraoke状態を使用すると、発話中のコンポーネントの視覚的外観を変更できます。

highlightModeプロパティはTextコンポーネントに適用されます。AlexaがTextコンポーネントを"highlightMode": "line"モードで読み上げるとき、テキストの各行は発話中にkaraoke状態に設定され、発話終了後にfalseに再設定されます。

以下の制限事項が適用されます。

  • SpeakItemコマンドは、blockモードで発話中はコンテンツをスクロールしません。たとえば、コンポーネントがコンポーネントのスクロールコンテナーより大きい場合、スクロールした後でも見えないコンテナーからはみ出した部分は、隠れたままになります。
  • 円形画面ではコンポーネントを中央揃えにする必要があります。そうしない場合、表示されないコンテンツの部分が多くなってしまいます。
  • SpeakItemは、highlightModeblockの場合、発話中はテキストの個々の単語や行をハイライトしません。
  • 項目をスクロールして表示するのに使用するアルゴリズムは、スクロールするコンポーネントが1つのみであることを想定しています。入れ子構造のコンポーネントには対応していません。
  • speechプロパティのないコンポーネントもスクロールして表示しますが、スピーチ音声のレンダリングは行いません。
  • SpeakItemは、タブレットの向きを切り替えるなど、設定の変更中には停止します。

SpeakItemコマンドが早期停止すると、視覚的な変更はすべて消去され、音声がすぐに停止されます。

再インフレート時の処理方針

Reinflateコマンドを実行すると、Alexaがドキュメントを再インフレートした後でSpeakItemコマンドを再開できます。コマンドは、ReinflatepreservedSequencers配列で指定されたsequencerで実行されている場合に再開されます。このシナリオでは、Reinflateコマンドはオーディオ再生を中断しません。このコマンドでは、ターゲットコンポーネントが保存されます。

ターゲットコンポーネントが再インフレートされた階層内にない場合、オーディオは停止し、コマンドは無視されます。

ターゲットコンポーネントが再インフレートされた階層内にある場合、再インフレート後に次の処理が行われます。

  • コンポーネントがスクロールして表示されます。
  • コンポーネントのkaraoke状態がtrueに更新されます。
  • 1行ずつのハイライトがすべて再開されます。

このページは役に立ちましたか?

最終更新日: 2025 年 12 月 12 日