Table of Contents
음성 명령: 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 경험의 잠재력 만 성장. 응용 프로그램의 미래는 말하기 - 당신의 응용 프로그램이 음성을 가지고 있는지 확인.