2016-05-16 3 views
17

私はAlexaのスキルを書くのが初めてで、話し手の言葉を保存するスキルを書いています。
たとえば、「Alexa、私が言っていることはすべて保存してください」と言えば、単語をいくつかの文字列に保存する必要があります。
は今、私が理解から、意図スキーマ何かがこの場合Amazon Alexa:ユーザーの言葉を保存

{ 
    intents:[ 
     "intent" : "SaveIntent" 
    ] 
} 

SaveIntent save 
SaveIntent store 

のような発言のようにする必要があり、どのように私は「{私が言う何でも}」保存しますか?

答えて

1

が更新されました:この回答は正しくありません。コメントに記載されているのは、Amazon.Literalスロットタイプで、これを許可する必要があります。


現時点では、ユーザーの生の音声入力へのアクセスはサポートされていません。将来的には可能かもしれませんが、Google'sのような他の音声からテキストAPIを見ることもできます。

これを現在Alexaで行う唯一の方法は、ユーザーが保存すると言える単語のセットリストを作成することです。

これを行うには、Amazonのカスタムスロットtypeを使用する例の1つに従うことができます。次に、ユーザがそのカテゴリに言える可能性のあるすべての単語を入力します。

+1

こんにちはアレックス、ご返信ありがとうございます。組み込みのコマンドがあります。「Alexa、Simon says ..」は、後にスピーカーが話す内容を繰り返します。その場合、生の音声入力がどのように保存されているのだろうかと思っていました。 –

+1

サードパーティの開発者は現在、Alexaのすべての機能にアクセスすることはできません。ユーザーの所在地を得ることができるUberのようないくつかのハイプロファイルアプリだけでなく、音楽検索などのアマゾンのアプリの一部でこれを見ることができますアプリの開発者はできません。うまくいけば、プラットフォームが成熟するにつれ、これは将来変化します。 –

+2

この回答は真実ではありません。フリーフォーム入力のキャプチャを可能にする 'AMAZON.Literal'スロットタイプを実装することができます。しかし、どのような一般的なインプットを期待するには、さまざまな入力例を用意しなければなりません。 –

12

可能な値の定義済み一覧ではなく、自由形式の音声入力をキャプチャするには、AMAZON.LITERALスロットタイプを使用する必要があります。 Amazon documentation for the Literal slot typeには、あなたと似ているユースケースが記述されています。ここでは、フレーズを取得してソーシャルメディアサイトに投稿するスキルが作成されます。これはStatusUpdate意図を作成することによって行われる。

{ 
    "intents": [ 
    { 
     "intent": "StatusUpdate", 
     "slots": [ 
     { 
      "name": "UpdateText", 
      "type": "AMAZON.LITERAL" 
     } 
     ] 
    } 
    ] 
} 

AMAZON.LITERALスロットタイプを使用しているので、この意図は、任意のフレーズをキャプチャすることができるであろう。しかし、スピーチエンジンが現実のフレーズをキャプチャするためのまともな仕事をするためには、ユーザが言いたいことのようなさまざまな例の発話を提供する必要があります。

ご説明したシナリオでは、あなたが非常にダイナミックなフレーズを捕獲しようとしていることを考えると、にあなたが余分な配慮をしたいと思うドキュメントのカップルの事があります:あなたが使用している場合は

この全範囲(最小値、最大値、および内のすべてをカバー

  • : 注以下、スロットにあるかもしれない単語の数で幅広いバリエーションで自由形式のテキスト を収集するAMAZON.LITERALタイプb ) は、非常に大きなサンプルセットを必要とします。上記の というスロット値ワードのすべてのバリエーションに対処するには、数百個以上のサンプルを 個以上用意してください。
  • スロット内のフレーズを、ユーザーが のフレーズ全体をポーズする必要がないように短くしておきます。

長尺発話入力は、より低い精度の経験につながるので、スロット値の数 単語よりも多くを必要とする音声言語インタフェースを設計 を回避することができます。 を一時停止せずにユーザーが話せないフレーズは、スロットの値が長すぎます。

、請求、ここで再びドキュメントからのサンプル発話、例です:

StatusUpdateが更新投稿

{到着を| | UPDATETEXT}

StatusUpdateが更新{UPDATETEXT夕食の時間}を投稿します

StatusUpdate更新情報を投稿する{out at lunch | UpdateText}

...(その他のサンプルではwiあなたがの範囲の正確な画像を与えるために、異なる長さの十分な例を提供した場合| {UPDATETEXTこの夜の食料品店で停止しようとして}

4-10語)

StatusUpdate番目のアップデートを投稿予想されるユーザーの発言があれば、UpdateTextスロットでアクセスできる実際のユースケースで動的なフレーズを正確に取り込むことができます。これに基づいて、あなたのニーズに固有の意図を実装することができるはずです。

+0

自分の入力が「TBD-2019-UK」、「17_TBD_UK_Leicester」、「17_TBD_UK_Leicester 1」、「18_TBD_UK_Leicester 2」、「Chicago IL United States」などのようにランダムになる可能性がある場合はどうすればよいでしょうか? ?それは非常にランダムではありませんが、それは年、都市、州、国、特別な順序のない他の主要なテキストのかなりランダムなコンボです。たとえ "Chicago IL United States"がサンプル発話で指定されていても、それが提供されない限り、LITERALは「Pittsburgh PA United States」のようなものを取得することはできません。すべての可能な順列と組み合わせを考え出す方法はありません。 – Kal

+0

さらに、ユーザーはさらに多くの値を追加できます。今のところ、特殊文字を無視することを選択したとしても、ユーザーの言葉をテキストでどのように取得できますか?問題は、一致するインテントが見つからない場合、ユーザーのスピーチテキストを返す代わりに、私のAlexaは何もしないことです。ただ何もせずに消え去る。何か案は?以下のKuldeep Ghateのコメントのように、「Alexa、Simon says ...」がどのように機能しているか知りたい。それはまさに私が達成しようとしていることです。おそらく私は新しいスレッドを開く必要がありますか? – Kal

+0

Simon Saysの機能の仕組みはファーストパーティのスキルであるため、パブリックスキルキットSDKで利用できない機能を使用する可能性があります。サードパーティの開発者は、ユーザーから期待される様々な種類のフレーズを提供するだけで、スピーチエンジンは何かの準備ができているものから外挿することができます。残念ながら、それはパブリックSDKが得られるほど良いものです。 –

0

(8/5/17)残念ながら、この機能はAmazonから削除され、AMAZON.LITERALSは削除されました。あなたは自由形式の入力をキャプチャしているか興味に応じて、しかし

、あなたは一度に一つの単語、名前、都市、数字、文字、記号などを取り込み、それらをストリングス入力MODEで満たすことができますその間にメッセージのない単一の変数にまとめます。

私は、ユーザー入力を収集して連結するために変更できるパスワード入力モードに取り組んできました。あなたの入力は遅くなりますが、ラムダ関数を最適化すると、少数の文章を入力するためのユーザーエクスペリエンスが速くなります。構造が重要です。コードは簡単に適合させることができます。

Amazon Alexa Skills Kit(ASK)の混合文字列に数字を入力するにはどうすればよいですか? https://stackoverflow.com/a/45515598/8408056