ドキュメント

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

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

概要

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 車の名前

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

  • 連絡先のグループ

  • 音楽のアーティスト名

  • ノートのタイトル

  • ノートのグループ

  • 支払い組織名

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

  • 写真のタグ

  • 写真のアルバム名

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

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

  • ワークアウトの名前

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

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

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

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

リスト1

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

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

トピック

関連トピック

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

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

アプリ名の同意語を指定する

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

関連項目

カスタムボキャブラリー

class INVocabulary(英語)

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