音声コマンド:iOSアプリのインタラクションの未来

音声コマンドは、ユーザーがiOSアプリケーションにどのように関与するかを根本的に再構築し、簡単なタップアンドスワイプインターフェイスを超えて、ハンズフリーで直感的な制御を実現します。iOS Speech Recognition APIを活用することで、開発者は、アプリをより使いやすく、効率的かつ魅力的にするためのリアルタイムの音声テキスト機能を統合することができます。音声制御ナビゲーションをフィットネストラッカーに有効活用できるかどうかにかかわらず、ハンズフリーのメモ処理や、モーターのインパシデント機能、Speech APIの初期設定、および最適化の実行の実行、および最適化の実行の実行を最適化する機能を提供します。

iOS 音声認識 API の理解

iOS 音声認識 API は、[] の部分です。Speech フレームワーク[] は、アプリがライブまたは録音されたオーディオをテキストに変換できます。60 以上の言語とダイアレクトをサポートし、オンデバイス(サポートされている言語の場合)または Apple のサーバー上で実行される認識エンジンがサポートされています。オンデバイス認識は、プライバシーを優先し、オフラインで動作し、サーバーベースの認識は、複雑な文に対してより高精度な精度を実現します。プライマリクラスは [FLTFLTF] [FLTF] [ReFS] および [ReFS] [ReFS] の [ReFS] は、 [ReFS] [ReFS] および [ReFS] [ReFS] [ReFS] [Res [Res [Res] の [Res [Res] の [Res (Res] のオーディオを管理します。 [Res [Res [Res [Res [Res の] [Res は、 [Res の] [Res の] [Res の] [Res の] [

主な機能は次のとおりです。

  • リアルタイム部分的な結果(プログレッシブコマンドの検出に役立ちます)。
  • ]]SFSpeechRecognizer's]]を介してカスタム語彙のサポート。 ]]プロパティ。
  • オーディオキャプチャとバッファリングの[]]AVAudioEngine[との統合。

API はユーザ開始コマンドのために設計されており、継続的、常にリストイングのシナリオ(Apple は 1 つの認識タスクで最大 1 分) を指すことが重要です。この制限は、意図的なエンゲージメントを促し、バッテリー寿命を節約することを奨励します。さらに、 ] の公式スピーチフレームワークのドキュメンテーション] および [WDC 2019 セッションの音声認識:3:3]を参照してください。

アプリで音声認識の設定

音声認識の統合には、注意深いパーミッション処理と音声セッションの設定が必要です。以下は、重要なステップであり、ベストプラクティスで拡張されます。

1. プロジェクトの準備

  • プロジェクト署名&機能のSpeech機能を追加します。
  • NSMicrophoneUsageDescriptionのキーをに含めます(例えば、このアプリは、音声コマンドを処理するためのマイクアクセスを必要とします)。
  • [NSSpeechRecognitionUsageDescriptionキー(例:「このアプリは、Appleのサーバーにあなたのスピーチを送信します。コマンドを認識します。」

注意: どちらのキーも、デバイス認識のみを使用する予定であっても、Appleはユーザーの同意を必要とします。

2. 承認申請

コール []]SFSpeechRecognizer.requestAuthorization 初期にアプリフロー()で)。各認証ステータスを適切に処理します。

import Speech

SFSpeechRecognizer.requestAuthorization { authStatus in
 DispatchQueue.main.async {
 switch authStatus {
 case .authorized:
 // Enable voice command UI
 case .denied, .restricted:
 // Explain why speech recognition is unavailable
 case .notDetermined:
 // This should not occur after the request
 @unknown default:
 break
 }
 }
}

3. SFSpeechRecognizerのインスタンスを作成する

ターゲットオーディエンスにマッチするロケールで[]SFSpeechRecognizer[を即座に指定します。 デフォルトデバイス言語の場合、を渡します。

let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))

4. 音声セッションとエンジンの構成

AVAudioEngine]をセットアップして、マイク入力をキャプチャします。 ]].recordカテゴリと]]].測定モードを使用して、スピーチの質を強調します。

let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode

let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, _) in
 self.request.append(buffer)
}

audioEngine.prepare()
try? audioEngine.start()

マイクの不当性を処理するために、常にオーディオエンジンが生産中の[ブロックで起動します。

音声コマンドの実装: スピーチからアクションまで

オーディオが流れると、認識タスクを作成し、コマンドの結果を解析します。 ユーザーが話す前にコマンドが検出されるように、キーは部分的な結果に反応することです。

基礎認識タスク

let request = SFSpeechAudioBufferRecognitionRequest()
request.shouldReportPartialResults = true

let recognitionTask = recognizer?.recognitionTask(with: request) { result, error in
 guard let result = result else {
 // Handle error
 return
 }
 let transcript = result.bestTranscription.formattedString
 // Check for commands
 if transcript.lowercased().contains("next") {
 // Execute action
 }
}

高度なコマンドの解析

シンプルなは小さな語彙のために動作しますが、堅牢なコマンドセットでは、次のことを考慮する:

  • []] キーワードを抽出し、ノイズをフィルタアウトするために NSLinguisticTagger[ を使う。
  • [] コマンド vocabulary を同義語(例えば、"skip", "next", "forward")で作成します。
  • ]より高い自信のしきい値を待ちます。 演技の前に[]を確認してください。
  • []クールダウン[を増幅して、複数のトリガーを同じフレーズから防ぎます。
func processTranscript(_ transcript: String) {
 let lowercased = transcript.lowercased()
 let commands: [String: () -> Void] = [
 "next": { self.showNextItem() },
 "go back": { self.showPreviousItem() },
 "stop": { self.stopPlayback() }
 ]
 for (command, action) in commands {
 if lowercased.contains(command) {
 action()
 break
 }
 }
}

エンド・オブ・スパナと沈黙の処理

デフォルトでは、ユーザがスピーキングを止めて一時停止が検出されると、認識タスクが終了します。また、手動でまたは]を呼び出してタスクを終了することもできます。連続コマンド体験(例、ディクテーション、マルチステップアクション)のために、各結果の後に認識タスクを再起動します。ただし、Appleの1分の1分の制限を1タスクに留意してください。長いセッションでは、チェーンタスク。

高度な機能:オンデバイス認識とカスタム語彙

iOS 13で始まり、Appleは、選択言語(現在の英語、フランス語、ドイツ語、日本語、韓国語、中国語、スペイン語、その他)のオンデザックスピーチ認識を導入しました。 利点には、ネットワーク依存性、遅延の減少、およびプライバシーの強化が含まれていません。 オーディオはデバイスを離れません。 デバイス上の認識を有効にするには:

guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
 request.requiresOnDeviceRecognition = true
}

注意: オンデバイスの精度は、特に名前付きエンティティティティや異常な語彙のために、サーバーベースのよりわずかに低下する可能性があります。カスタムジャーゴン(例えば、医療用語、製品名)のアプリでは、[カスタム語彙リスト[]を[]]]]SFSpeechRecognizer's]または[FLT]][FLT][FLT]][[FLT][FLT]]][[FLT]]]]][[FLT]]][[[FLT]]]][[[[[[FLT]]]]]][[[[[[FLT]]]]]]]]]][[[[[[[[[[[[FLT]]]]]]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

もう一つの高度な技術は、可用性の変更を監視するために[[]]SFSpeechRecognizerDelegate[を使用します(例えば、ユーザが権限を呼び返し、ネットワークの状態が変更されます)。 実装:

class YourViewController: UIViewController, SFSpeechRecognizerDelegate {
 func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
 // Disable or enable voice command button based on availability
 }
}

音声コマンドの制作に最適なプラクティス

音声インターフェースはタッチとは異なる動作です。これらのガイドラインに従って、洗練されたユーザーエクスペリエンスを配信します。

1. 明確なフィードバックを提供して下さい

  • 聴くときに波形やパルスインジケータを表示します。
  • 認識されたテキスト(部分)を表示し、ユーザーがシステムが動作していることを知っている。
  • コマンド認識時にハプティックフィードバック(]]]]]]]UIImpactFeedbackGenerator)を使用します。

2. ハンドルの間違い 優雅に

一般的なエラーには、マイクアクセス、認識サービスが利用できなくなったり、オーディオ品質が悪いりすることはありません。 ユーザーがアクション可能なメッセージ(例えば、「ラウダーを話してください」または「インターネット接続をチェックしてください」など)で警告します。

3. 別のアクセントおよび環境のためにを最大限に活用して下さい

多様なスピーカーグループでテストします。 ]]SFSpeechRecognizerの]バックグラウンドスレッドで認識を実行するためのプロパティを使用します。 デッドエアを記録を避けるために[]マウスアクティビティ検出[[(VAD)のヒューリスティックを実装します。

4. プライバシーと透明性

マイクと音声の許可が必要な理由を明確に説明します。 ユーザーの意図せずに音声を録音または処理しないでください。システム設計は、音声コマンドを開始するために明示的なタップが必要です。 Appleのプライバシーガイドラインの詳細については、「]]のAuthorizationを要求します。

5.フォールバックの実装

音声を使わなくても、いつでも、代替タッチやキーボード入力を提供できます。アクセシビリティのために、音声コマンドはスイッチコントロールやボイスオーバーで呼び出すことができます。

リアルワールドユースケースとインスパイア

  • ナビゲーションアプリ:[]] "自宅を振る"または "近くのガソリンスタンドを表示する"地図SDKを使用して。
  • []生産性と機能:[]]「新しいメモを作成する」または「コアデータまたはCloudKitと統合されたタスクを追加」。
  • スマートホームコントローラー:[]] HomeKitを使用したリビングルームライトをオフします。
  • フィットネス&ワークアウト:[ 「5分クールダウンを開始」または「10プッシュアップ」
  • []E-Learning:[] フラッシュカードやクイズに音声回答。

より多くのアイデアのために、 ]]SFSpeechRecognizer APIリファレンスと[]]]]]SpeakToMeサンプルコードをAppleから探索します。

結論: ボイスでユーザーをエンパワー

iOSの音声認識APIは、音声コマンドの力を任意のアプリに置く成熟した、よく文書化されたツールです。 オンボーディングから日常的な使用まで、よく導入された音声機能は、摩擦を減らし、アクセシビリティを向上させ、ユーザーに喜びを与えます。 セットアップ手順、ベストプラクティス、およびこの記事で説明した高度な技術に従うことで、自然と楽に感じる方法で、聴くアプリを作成できます。

小さなスタート:次のアップデートで単一のコマンド(「ヘルプ」または「戻る」)を統合し、ユーザーのフィードバックに基づいて展開します。オンデバイス認識が向上し、新しい言語が追加されているため、ボイスコントロールされたiOS体験の可能性は成長します。アプリのやり取りの将来は話されます。アプリに音声があることを確認してください。