体調記録くん音声入力機能開発記録2
序文
音声入力で体調を記録する方法をChatGPTには頼らず自力で情報を探していたらApple の公式ドキュメントでグローバルボキャブラリーというキーワードを拾いました。この文書では公式ドキュメントを見ながら作業した開発記録をまとめます。
まとめ
音声入力の設定方法らしきものを見つけたので設定してみました。
動作確認は失敗でSiriが何か問題が起きましたというのだけれど、そこからの調査方法がわからず行き詰まってしまいました。
パラメータのフレーズの設定と実際のEnumとの紐付けをしてないのでその辺りが怪しいと思うのですが。。
それっぽいドキュメントの発見
SiriKit関連のドキュメントを徘徊していたらグローバルボキャブラリーの記述を見つけました。 https://developer.apple.com/jp/documentation/sirikit/registering_custom_vocabulary_with_sirikit/
ざっと読むとサンプルフレーズやらパラメーターボキャブラリーやらイメージしていた必要な設定に近しいキーワードを発見。とりあえず指示に従って開発してみることにしました。
AppIntentVocabulary.plistの追加
XCodeプロジェクトメニューの New > File…を選択、ダイアログで iOS > Resource > PropertyList を選択しNext
SaveAs: AppIntentVocabulary を入力
ディレクトリ Base.lproj を選択
TargetはひとまずAppとIntentExtensionを選択してCreate
Intent PhrasesとParameter Vocabulariesの登録
+ボタンを押すとIntent Phrasesが、もう一度押すとParameter Vocabulariesが追加されました。
Intent Phrasedの設定
> をクリックしてIntent Phrasesを開くとItem 0があり、さらに開くとIntent NameとIntent Examplesが出てきました。
Intent Nameに先日作ったIntentの名前RecordLatestConditionIntentを設定しました。
Intent ExamplesのItem 0にCondition {condition}を設定しました(フォーマットは勘で)
Parameter Vocabulariesの設定
> をクリックしてParameter Vocabulariesを開くとItem 0があり、さらに開くとParameter NamesとParameter Vocabularyが出てきました。
Parameter NamesのItem 0にRecordLatestConditionIntent.conditionを設定しました。
Parameter Vocabularyを開きItem 0を開くとVocabulary Item IdentifierとVocabulary Item Synonymsが出てきました。
conditionに入る値を定義するだと考え、Vocabulary Item Identifierにpoorを設定しました。
Vocabulary Item Synonymsを開いていくと
Vocabulary Item Example
Vocabulary Item Phrase
Vocabulary Item Pronunciation
の3種類かのうちPhraseが必須ということなので追加してpoorを設定しました。
同様に体調を表すワード average, good, very good, excellentを設定しました
日本語対応
AppIntentVocabulary.plistを選択してXCode画面右側のファイルインスペクターを表示しLocalizationでJapanesにチェックを入れる
AppIntentVocabulary.plist(Japanese)が自動生成されるので開く
Baseで入力した内容が入っているのでIntent Examples, Vocabulary item Phrase を対応する日本語に書き換える
動作確認
Siriを起動して「体調 とても良い」と入力すると、
「少々お時間をください」の後「すみません、何か問題が起きました。」で終了しました。
困った。これどうやって調査すればいいのだろう?
パラメータのフレーズの設定と実際のEnumとの紐付けをしていないことが気になっています。何か方法があって足りてないだけでしょうか?
この記事が気に入ったらサポートをしてみませんか?