※このブログはBuild Immersive Audio and Visual Alexa Skills with New Alexa Presentation Language (APL) Featuresを翻訳したものです。
Alexaスキルでより充実したレスポンスを構築できる新しいオーディオおよびビジュアル機能が発表されました。APL 1.5では、新しい応答コンポーネント、新しい画像フィルターと合成機能、AVGシャドウのサポート、新しいアクセシビリティ機能などが追加されました。APL for Audio 0.9(ベータ版)では、音声合成とリソース、名前付きコンポーネント構成とプロパティが追加、コンテンツの再利用が簡素化され、オーサリングツール機能が向上しています。開発を始めるには、APL 1.5およびAPL for Audio 0.9の技術文書をご覧ください。
Imageコンポーネントがsourceプロパティの値の配列を受け入れるようになりました。新しい画像フィルターでは、画像を変更したり、さまざまな方法で画像を合成したりできるため、ビジュアル応答を作成するために必要なアセットの数を減らすことができます。たとえば、以下のようなことが可能です。
2つの画像を合成します。
画像を色またはグラデーションで合成します。
彩度調整フィルターとグラースケールフィルターを適用します。
Alexa Vector Graphics(AVG)で影の適用がサポートされるようになりました。これにより、簡単な方法でビジュアルを見やすくできます。以下は、AVGテキスト項目の例です。
{
"type": "AVG",
"version": "1.2",
"height": 1000,
"width": 1000,
"items": {
"type": "text",
"fill": "orange",
"fontWeight": "bold",
"fontFamily": "amazon-ember, sans-serif",
"fontSize": 120,
"text": "5 o'clock",
"x": 10,
"y": 100,
"filters": [
{
"type": "DropShadow",
"color": "black",
"horizontalOffset": 3,
"radius": 3,
"verticalOffset": 3
}
]
}
}
新しいアクセシビリティ機能を活用して、支援技術を利用しているユーザーのエクスペリエンスを向上させることができます。APL1.5では、新しいアクセシビリティプロパティがenvironmentオブジェクト(fontScale、screenMode、screenReader、timing)に追加され、actionsとroleプロパティが基本コンポーネントに追加されました。actionsプロパティを使用すると、ユーザーはプログラムでコンポーネントを呼び出すことができます。また、roleプロパティは、コンポーネントの目的について機械で読み取り可能な情報を提供します。この機能をスキルに組み込むことで、視覚の補助を必要とするユーザーは、画面上でのタップやスワイプなどの一般的なタッチ操作を、音声のみで実行できるようになります。
注: Alexaのアクセシビリティ機能を使用してスキルをテストできます。
actionsプロパティを使用したサンプルコンポーネント
次のタッチ可能な要素は、押下と解放の単一操作を可能にする1つの標準アクション("activate")があります。
{
"type": "TouchWrapper",
"actions": [
{
"name": "activate",
"label": "Reply to user",
"command": {
"type": "SendEvent",
"arguments": "Activated by action invocation"
}
}
]
}
音声合成機能を使うと、プリミティブコンポーネントを新しいカスタムコンポーネントに結合し、APLAドキュメントのメインテンプレートで何度も再利用できます。また、合成でリクエストされたパラメーターのみを提供できるため、ワークフローが簡素化します。
合成のサンプル
この音声合成には、 visitorと punchlineという2つのパラメーターがあります。パラメーターは、SSMLを使用して音声を生成するSpeechコンポーネントに渡されます。
"compositions": {
"KnockKnock": {
"parameters": [
{
"name": "visitor",
"type": "string"
},
{
"name": "punchline",
"type": "string"
}
],
"items": [
{
"type": "Sequencer",
"items": [
{
"type": "Speech",
"contentType": "SSML",
"content": "knock knock."
},
{
"type": "Speech",
"contentType": "SSML",
"content": "Who's There"
},
{
"type": "Speech",
"contentType": "SSML",
"content": "${visitor}"
},
{
"type": "Speech",
"contentType": "SSML",
"content": "${visitor} who?"
},
{
"type": "Speech",
"contentType": "SSML",
"content": "${punchline}"
},
{
"type": "Silence",
"duration": "500"
}
]
}
]
}
}
KnockKnock合成を使用したレスポンスの例
レンダリングされると、次の応答は、3つのkock knockジョークすべてを順番に話します。
"mainTemplate": {
"parameters": [
"payload"
],
"item": {
"type": "Sequencer",
"items": [
{
"type": "KnockKnock",
"visitor": "Cereal",
"punchline": "Cereal pleasure to meet you."
},
{
"type": "KnockKnock",
"visitor": "Alpaca",
"punchline": "Alpaca the trunk, you pack the suitcase."
},
{
"type": "KnockKnock",
"visitor": "Voodoo",
"punchline": "Voodoo you think you are asking me so many questions?"
}
]
}
}
リソースは、データバインディングでアクセスできる名前付きエンティティです。APLAドキュメント内のブロックでリソースを定義し、environmentプロパティの値に基づいて条件付きリソースを作成します。
サンプルリソース
この例では、 volumeフィルター内で後にペアとして使用するために番号を付けることができます。数値をリソースとして定義することで、複数のロケーションにあるリソースを使用し、値を更新することで複数のコンポーネントのボリュームへの参照をすべて更新できます。
"resources":[
{
"number": {
"quiet": 0.5,
"loud": 1.5
}
}
]
ドキュメントでリソースを使用するには、@ 構文を使用します。
APLAリソースを使用したサンプルコンポーネント
"mainTemplate": {
"parameters": [
"payload"
],
"item": {
"type": "Sequencer",
"items": [
{
"type": "Speech",
"content": "John Jacob Jingleheimer Schmidt, his name is my name too.",
"filter":[
{
"type": "Volume",
"amount": "@quiet"
}
]
},
{
"type": "Speech",
"content": "Whenever I go out, the people always shout"
},
{
"type": "Speech",
"content": "There goes John Jacob Jingleheimer Schmidt!",
"filter":[
{
"type": "Volume",
"amount": "@loud"
}
]
},
{
"type": "Speech",
"content": "Nanananananana",
"filter":[
{
"type": "Volume",
"amount": "@quiet"
}
]
}
]
}
}
開発中に、音声応答の特定のセグメントに集中したいと思ったことがあると思います。 更新されたAPLAオーサリングツールでは、タイムラインをクリックして応答のさまざまな箇所を聞いたり、再生するタイムラインの部分を選択したり、ループモードをオンにして応答全体または選択した部分だけを繰り返し再生したりできるようになりました。
APLオーディオ処理中に発生したエラーを通知するエラーイベントを受信するようになりました。
詳細についてはAPLとAPL for Audio(ベータ版)を参照してください。また、質問があればTwitterでプロダクトマネージャーArunとAustin(@aruntalkstech、@austinvach)にお問い合わせください。