記事

SiriKitでのカスタムボキャブラリーの登録

Appに固有の用語を登録し、SiriでどのようにAppを使うかを示すサンプルフレーズを提供します。

概要

Appは、通常と用法が異なるボキャブラリーや、完全にApp固有のボキャブラリーを登録する必要があります。カスタムボキャブラリーによってSiriの音声認識プロセスが向上し、Appに正しい情報が伝わります。

Siriを通じたAppの使用についてのサンプルフレーズを、1つまたは複数提供する必要があります。サンプルフレーズは、ユーザーがAppについて発話する方法に合致している必要があります。また、Appで定義されるカスタム用語があればそれを含める必要があります。

iOS Appで定義した用語は、watchOSのIntents Extensionと自動的に共有されます。watchOSのIntents Extensionで、特定ユーザーのみに関係するボキャブラリーやグローバルボキャブラリーを再度登録する必要はありません。

サンプルフレーズとグローバルボキャブラリーを登録する

Intents App ExtensionのInfo.plistファイルを使って、Appのサンプルフレーズとグローバルボキャブラリーを登録します。どのAppでも、Siriを使ってIntentをトリガする方法をユーザーに示すフレーズを少なくとも2、3個提供する必要があります。SiriはSiriガイドにそのフレーズを表示します。また、カスタムボキャブラリーを使って認識プロセスの精度を向上させます。下記の手順に沿ってグローバルボキャブラリーファイルを生成します。

  1. Xcodeプロジェクトで「New」>「File」を選択します。

  2. 「iOS」>「Resource」以下で、ファイル型として「Property List」を選択してください。

  3. 「Next」をクリックします。

  4. ファイル名をAppIntentVocabulary.plistに設定し、このファイルをiOS Appに追加します。

  5. 「Create」をクリックします。

AppIntentVocabulary.plistファイルを、base development languageに対応する、iOS Appの言語(.lproj)ディレクトリに配置します。ローカライズ版のファイルは、該当する言語のプロジェクトディレクトリに収容します。Xcodeでは、「File」インスペクタから自動的に、ローカライズしたバージョンを生成できます。

グローバルボキャブラリーファイルのルート直下には、次の2つのキーがあります。

  • IntentPhrasesキーには、サービスを起動するためのサンプルフレーズが保持されます。必ずこのキーを含めてください。

  • ParameterVocabulariesキーは、Appの全ユーザーに適用されるApp固有の用語、およびそれらの用語が適用されるIntentパラメータを定義します。App固有の用語がなければ、このキーを省略できます。

配車オプションやワークアウト名をカスタムボキャブラリーとして指定できます。 カスタムボキャブラリーは、必ず、対応するIntentオブジェクトの特定プロパティと関連付けてください。同じ用語を複数のIntentに関連付けてもかまいません。例えば、ワークアウト関連のすべてのIntentに、同じワークアウト名を関連付けることができます。

サンプルフレーズとカスタム用語の指定に関する詳しい情報は、グローバルボキャブラリーリファレンスを参照してください。

ユーザー固有のボキャブラリーを登録する

実行時にINVocabulary(英語)オブジェクトのsetVocabularyStrings(_:of:)(英語)メソッドを呼び出すことによってユーザー固有のボキャブラリーを登録します。グローバルボキャブラリーはAppバンドルで宣言しますが、ユーザー固有の用語はiOS Appから実行時に宣言します。宣言する用語は、次のいずれかのカテゴリに属している必要があります。

  • オーディオブックのタイトル

  • オーディオブックの作者名

  • 車の名前

  • 連絡先の名前(App固有であり、Contactsフレームワークで管理されない場合)

  • 連絡先のグループ

  • 音楽のアーティスト名

  • ノートのタイトル

  • ノートのグループ

  • 支払い組織名

  • 支払い口座のニックネーム

  • 写真のタグ

  • 写真のアルバム名

  • Podcastまたはラジオの番組名

  • プレイリストのタイトル

  • ワークアウトの名前

  • 車両プロファイルの名前

登録するボキャブラリーとしては、Appに慣れていない人が誤解する可能性のある用語を優先的に選んでください。例えば、Appでは本来の意味と異なる意味で使われるようなボキャブラリーを登録します。「My Photo Album」「My Workout」のように、容易に認識できる用語を登録する必要はありません。

setVocabularyStrings(_:of:)(英語)メソッドを呼び出すたびに、同タイプの登録済み用語が置換されます。このため、このメソッドを呼び出すたびに、ユーザーに関連付けたいすべての用語を含める必要があります。また、優先順位に基づいて用語を並べる必要があります。最も重要な用語がリストの最初に来るようにしてください。

リスト1は、ユーザー向けにカスタムワーク名のセットを登録する場合の例です。このサンプルでは、Appが、ユーザーが最近使ったものから順にワークアウト名を並べるカスタムのsortedWorkoutNamesメソッドを提供することを想定しています。このコードは、Intents App Extensionからではなく、iOS Appから実行します。

リスト1

ユーザー固有のボキャブラリーを登録する

let workoutNames = self.sortedWorkoutNames()
let vocabulary = INVocabulary.shared(). 
    setVocabularyStrings(workoutNames, of: .workoutActivityName)

トピック

関連トピック

グローバルボキャブラリーリファレンス

Appのグローバルボキャブラリーファイルに含まれるキーと値の説明です。

App名の同意語を指定する

ユーザーになじみのある、またはユーザーが言いやすい、Appの別名を登録します。

関連項目

カスタムボキャブラリー

class INVocabulary(英語)

Siriリクエストに含まれる可能性のあるユーザー固有のボキャブラリーを登録するオブジェクト。