음성 명령: iOS 앱 인터랙션의 미래

iOS 애플리케이션에 참여하는 방법을 근본적으로 재구성하고, 간단한 탭 및 스위프 인터페이스를 통해 손없는 직관적 인 제어를 이동. iOS Speech Recognition API를 활용하면 개발자는 앱을 더 접근, 효율적이고 참여할 수 있는 실시간 음성을 통합할 수 있습니다. 이 경우, 피트니스 추적기에 음성 제어 탐색을 활성화하고 생산성 앱에서 손없는 메모를 확보하거나, 모터 임베디드를 사용하여 사용자의 접근성 기능을 강화할 수 있습니다. 이 경우, 이 기능은 최고의 음성 제어 기능을 제공하여, 최고의 음성 제어 기능을 제공합니다.

iOS Speech Recognition API에 대한 이해

iOS Speech Recognition API, Speech Framework]의 일부로 라이브 또는 사전 녹음 된 오디오를 텍스트로 변환 할 수 있습니다. 그것은 60 개 이상의 언어와 방언을 지원하며, 인식 엔진이 on-device (지원되는 언어) 또는 Apple의 서버에서 실행됩니다. On-de 승인은 개인 정보 보호 및 오프라인 작업을 우선적으로 우선적으로 수행하며 서버 기반 인식은 종종 복잡한 문장에 대한 높은 정확도를 제공합니다. 1차 클래스는 ]]]]]][FLT:]]]]]]][FLT:[FLT:[FLT:[FLT:]]]]][FLT:[FLT:[FLT:[FLT:[FLT:]]]]]]]]]]]]]]]]

주요 기능에는 다음과 같습니다:

  • 실시간 부분 결과 (진행 명령 감지에 사용).
  • ]SFSpeechRecognizer's ] 속성을 통해 사용자 정의 어휘에 대한 지원.
  • AVAudioEngine와 오디오 캡처 및 버퍼링을 위한 통합.

API가 사용자 시작된 명령을 위해 설계되었는지, 연속적으로, 항상 목록화 시나리오 (Apple은 단일 인식 작업에서 최대 1 분을 부과). 이 제한은 의도적 참여를 격려하고 배터리 수명을 보존합니다. 더 읽기를 위해 ]official Speech Framework documentation]와 WWWDC 2019 세션은 Speech Recognition]에 있습니다.

앱에서 Speech Recognition 설정

음성 인식 통합은 주의적인 권한 취급과 오디오 세션 구성을 요구합니다. 아래는 가장 좋은 관행으로 확장된 필수 단계입니다.

1. 당신의 프로젝트를 준비

  • Speech 프로젝트의 Signing & Capabilities에 대한 기능을 추가합니다.
  • NSMicrophoneUsageDescription] 키 포함 (예:2], "이 응용 프로그램 마이크는 처리 음성 명령에 액세스 할 필요가있다.")
  • NSSpeechRecognitionUsageDescription] 키 (예: "이 응용 프로그램은 명령을 인식 애플의 서버로 연설을 보냅니다."

참고: 두 키는 기기 인식에만 사용할 계획이라면 요구됩니다. — 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 인스턴스 생성

Instantiate SFSpeechRecognizer 는 타겟 관객과 일치하는 현지인과 함께. 기본 장치 언어의 경우 를 통과:

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

4. 오디오 세션 및 엔진 구성

AVAudioEngine을 설정하여 마이크 입력을 캡처합니다. ].record] 카테고리와 ].measurement]] 모드를 사용하여 음성 품질을 강조합니다.

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()

항상 오디오 엔진이 시작을 감싸는 ]] 마이크가 무해한 기능을 처리하기 위해 생산에 블록.

Voice Commands 구현: Speech to Action에 대한 강연

오디오가 흐르는 경우, 명령에 대한 인식 작업과 파스 결과를 생성합니다. 키는 부분적인 결과에 반응하기 때문에 명령이 사용자의 말에 따라 감지됩니다.

Basic Recognition 작업

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를 사용하여 키워드를 추출하고 소음을 필터링합니다.
  • 명령 구문 구문과 함께 (예를 들어, "skip", "next", "forward").
  • 더 높은 신뢰 임계값: ]을 연기하기 전에 체크한다.
  • ] Cooldown을 구현하여 여러 방아쇠를 같은 구문에서 방지합니다.
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
 }
 }
}

처리 End-of-Speech와 침묵

기본적으로, 인식 작업이 종료되면 사용자의 중지 및 일시 중지가 감지됩니다. 또는 ]를 호출하여 작업을 수동으로 종료할 수 있습니다. 연속 명령 경험 (예 : , dictation, 멀티 단계 행동)을 위해 각 결과 이후에 인식 작업을 다시 시작합니다. 그러나, 한 작업에 Apple의 ~1 분 제한을 염두에두고; 더 긴 세션, 체인 작업.

고급 기능: On-Device 인식 및 사용자 정의 어휘

iOS 13, Apple에서 시작하여 선택한 언어에 대한 on-device 음성 인식 (현재 영어, 프랑스어, 독일어, 일본어, 한국어, 만다린 중국어, 스페인어 등). 장점은 네트워크 의존성, 감소 된 대기 시간 및 향상된 개인 정보 보호 기능을 포함합니다. 오디오가 장치를 나타낼 수 있도록하십시오.

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

참고: On-device 정확도는 서버 기반보다 약간 낮을 수 있으며 특히 엔티티티티 또는 특이한 어휘를 위해 사용됩니다. 사용자 정의 Jargon (예 : 의료 용어, 제품 이름)이있는 앱을 위해 [FLT : 0]] 맞춤형 어휘 목록[FLT : 1]을 통해 [[FLT : 2]SFSpeechRecognizer's[FLT : 3] [[FLT : 15]] 또는 [FLT]] [FLT : 17] [FLT]]] [FLT : 17] [F]]] [FLT : 17]] [FLT]]]] [FLT : 17] [F]]]] [F]]] [FLT : 17] [F]]] [F]]] [F] [F] [F]] [F] [F]]] [F] [F] [F]] [F] [F]]] [[F]]]]]]]]] [[F] [F] [F] [F] [F]]]]]]]]]]]]]] [[F]]]]

또 다른 선진 기술은 SFSpeechRecognizerDelegate]를 사용하여 가용성 변경을 모니터링합니다.(예: 사용자의 유효성, 네트워크 상태 변경). 구현:

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

생산의 음성 명령을위한 모범 사례

Voice 인터페이스는 터치보다 다르게 행동합니다. 이러한 가이드 라인을 따라 광택 있는 사용자 경험을 제공합니다.

1. 명확한 의견을 제공하십시오

  • 청취시 파형 또는 펄싱 표시기를 표시하십시오.
  • 인식 된 텍스트를 표시 (부분 일) 그래서 사용자가 시스템을 작동 알고.
  • haptic Feedback (via ]UIImpactFeedbackGenerator])를 명령어 인식에 사용합니다.

2. 손잡이 과실은 Gracefully

일반적인 오류에는 마이크 액세스, 인식 서비스 사용 불가, 또는 가난한 오디오 품질이 없습니다. 행동 가능한 메시지 (예 : "확장한 말"또는 "인터넷 연결을 확인하십시오."로 사용자를 경고하십시오.

3. 다른 Accents 및 환경에 최적화

다양한 스피커를 가진 테스트. ]SFSpeechRecognizer]의 속성을 사용하여 배경 스레드에 인식을 실행합니다. voice activity detection] (VAD) heuristics를 구현하여 죽은 공기를 녹음합니다.

4. 개인 정보 및 투명성

분명히 마이크와 연설 권한을 필요로하는 이유를 설명합니다. 사용자 의도없이 기록 또는 프로세스 연설을하지 마십시오. 시스템 디자인은 음성 명령을 시작하려면 명시적 탭을해야합니다. Apple의 개인 정보 취급 지침에 더 많은 경우 [[FLT : 0]]]Requesting Authorization[FLT : 1]를 참조하십시오.

5. Fallback 구현

모든 사용자는 음성을 사용할 수 없거나 원하는 경우. 항상 대안 터치 또는 키보드 입력을 제공합니다. 액세스 가능성에 대해서는 음성 명령을 Switch Control 또는 VoiceOver를 통해 호출 할 수 있습니다.

Real-World 사용 사례 및 영감

  • Navigation Apps: "내 집"또는 "내 집 주유소를 참조하십시오" 지도 SDK를 사용하여.
  • 제품성 및 앰프; 노트 태킹: "새로운 노트를 작성" 또는 "Add task" Core Data 또는 CloudKit과 통합.
  • Smart Home Controllers: "홈키트를 사용하여 거실 조명을 끄십시오.
  • Fitness & 운동: "5분의 재사용 대기시간"또는 "로그 10 Pushups"를 시작합니다.
  • E-Learning: flashcards 또는 퀴즈에 대한 음성 답변.

더 많은 아이디어를 위해, SFSpeechRecognizer API 참조]와 ]SpeakToMe 샘플 코드를 Apple에서 살펴보십시오.

결론: 음성으로 사용자를 강화

iOS Speech Recognition API는 모든 앱으로 음성 명령의 힘을 넣는 성숙한, 잘 문서화 된 도구입니다. 일상적인 사용으로 온전히 사용하기 때문에, 잘 단순화 된 음성 기능은 마찰을 줄이고, 접근성을 개선하고, 사용자에게 만족시킵니다. 설정 단계, 모범 사례 및 고급 기술이 이 문서에 나타날수록 자연스럽게 만족감을 느끼면서 앱을 만들 수 있습니다.

작은 시작: 단일 명령을 통합 (도움말 "또는 "고 다시") 다음 업데이트에서, 다음 사용자 피드백에 기반을 확장. on-device 인식 향상 및 새로운 언어 추가, 음성 제어 아이폰 OS 경험의 잠재력 만 성장. 응용 프로그램의 미래는 말하기 - 당신의 응용 프로그램이 음성을 가지고 있는지 확인.