Цивільно-імперські послуги; структурне будівництво
Використання API розпізнавання мови Ios для голосових команд в додатках
Table of Contents
Голосові команди: Майбутнє впровадження програми iOS
Команда голосових команд є фундаментально змінним, як користувачі взаємодіють з додатками iOS, які переходять за простими інтерфейсами та пристроями для безповоротного доступу, інтуїтивно зрозумілого керування. Використовуючи API розпізнавання мови iOS, розробники можуть інтегрувати в режимі реального часу можливості для мовного мовлення, які роблять додатки доступнішими, ефективні та привабливі. Незалежно від того, чи дозволяє голосово керовану навігацію для фітнес-трекера, що дозволяє без зайвих помилок у додатку продуктивності або можливості доступу до можливостей для користувачів з порушеннями двигуна, API розпізнавання мови забезпечує надійний, виробничо-прочитаний фундамент. Ця стаття досліджує повний процес реалізації голосових команд в додатках iOS, кращі приклади використання та реальне використання в реальному пошуку.
Розуміння API розпізнавання мови iOS
API розпізнавання мови IOS, частина Speech Framework, дозволяє додатки, щоб конвертувати живий або попередньо записаний аудіо в текст. Він підтримує понад 60 мов і діалектів, з двигуном розпізнавання, що працює або на пристрої (для підтримуваних мов) або на серверах Apple. На-розробці визнання пріоритетом конфіденційності та працює в автономному режимі, при цьому розпізнавання сервера часто забезпечує високу точність для складних речення. Початковий клас SFSpeechRecognizer, який керує процесом розпізнавання та S4SRecognizer[F
Ключові можливості включають:
- Несправжливі результати часткового визначення командного рядка.
- ] ].
- Інтеграція з AVAudioEngine] для запису аудіо та буферизації.
Важливо відзначити, що API призначений для команд, що ініціюються користувача, і не для безперервних, постійно-спискових сценаріїв (додаток накладається на один хвилинний максимум на одне завдання визнання). Цей обмеження заохочує навмисне залучення і зберігає термін служби акумулятора. Для подальшого читання консультує (ФЛТ: 1] і WWWDC 2019 сеанс на Вимова розпізнавання.
Налаштування розпізнавання мови у додатку
Інтеграція мови вимагає ретельного зондування та налаштування аудіо сеансу. Нижче наведені основні кроки, розширені з кращими практиками.
1. Підготовка проекту
- [[FLT: 0]]Speech] можливість увімкнути підпис та написати проект; Можливості.
- У комплекті NMicrophoneUsageDescription ключ в (наприклад, "Цей додаток потребує доступу до мікрофона до обробки голосових команд).
- У тому числі 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 Категорія та .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()
Завжди загортайте аудіодвигун старту в блок у виробництві для обробки мікрофона недоступності.
Реалізація голосових команд: Відмова до дій
Після того, як аудіо відбувається потокове відео, ви створюєте завдання розпізнавання та результати парсерів для команд. Ключ відреагувати на часткові результати, щоб команди були виявлені навіть перед тим, як користувач закінчує говорити.
Основні завдання розпізнавання
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 для вилучення ключових слів і фільтрування шуму.
- Створення словника команди з синонімами (наприклад, "скіп", "некст", "наперед").
- Запит на більш високий рівень довіри: // .
- Запровадження охолоджувача для запобігання багаторазових тригерів з тієї ж фрази.
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 і Silence
За замовчуванням, завдання розпізнавання закінчується, коли користувач перестає говорити і пауза виявлений. Ви також можете вручну закінчити завдання, викликаючи або . Для безперервного досвіду команди (наприклад, диктація, багатоступінкові дії), перезавантажити завдання розпізнавання після кожного результату. Однак, уважайте, що Apple ~1-хвилинний ліміт на одному задачі; для більш тривалих сеансів, ланцюгових завдань.
Додаткові функції: Відмова від надії та спеціальні вакбуленти
Починаючи з iOS 13, Apple представила на основі розробки мовного розпізнавання для вибору мов (поточно англійська, французька, німецька, японська, корейська, Мандарінська китайська, іспанська та ін.). Переваги включають не залежностей мережі, знижену лагність та розширену конфіденційність — відсутність аудіо-повідомлень пристрою. Щоб включити розпізнавання настройок:
guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
request.requiresOnDeviceRecognition = true
}
Примітка: Точність на пристрої може бути трохи нижче, ніж на сервері, особливо для іменованих осіб або незвичайних словників. Для додатків з індивідуальним бангоном (наприклад, медичні умови, імена продуктів), розглянути додавання список словників ]SFSpeechRecognizer [FLT::15] або за допомогою навчання вбудований мовний визначальник] через Speech Framework[F:7[F:4]
Ще одна передова техніка використовується 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. Конфіденційність та прозорість
Ми можемо самі зателефонувати одержувачу і узгодити зручний час і місце вручення квітів, а якщо необхідно, то збережемо сюрприз.
5. Впровадити Fallback
Не всі користувачі можуть або хочуть використовувати голос. Завжди забезпечують альтернативний сенсорний або клавіатурний вхід. Для доступності голосові команди можуть викликати управління перемикачем або голосовим пристроєм.
Реальний світ Використання випадків та натхнення
- Навігаційні додатки: "Зробити мене додому" або "Показати поруч станції" за допомогою карти SDKs.
- Продуктність та амп; Примітка-Похід: "Створити нову замітку" або "Додати завдання" інтегровані з Core Data або CloudKit.
- Smart Home Controllers: "Зніміть живі вогні" за допомогою HomeKit.
- Фітнес імп; Тренування: "Зірка 5-хвилинний охолоджувач" або "Log 10 штовхаків".
- E-Learning: Відповіді на флешкарти або вікторини.
Для більшої ідеї, вивчення SFSpeechRecognizer API посилання і SpeakToMe зразок code з Apple.
Висновок: Настроювання користувачів з голосовим зв'язком
API розпізнавання мови iOS є зрілим, добре доведеним інструментом, який поставляє живлення голосових команд в будь-який додаток. Від бортового до щоденного використання добре зрозумілі функції голосу зменшують тертя, покращують доступність і радують користувачів. Дотримуючись кроків налаштування, кращих практик, а передові техніки, викладені в цій статті, ви можете створювати додатки, які слухають, і реагувати — способи, які відчувають природну і без зусиль.
Почати невеликий: інтегрувати одну команду ( "Допомога" або "Повернутися") у вашому наступному оновленні, потім розширюватися на основі відгуків користувачів. Як додано розпізнавання настройок, покращує та додано нові мови, потенціал для голосового керованого досвіду iOS буде тільки рости. Майбутнє взаємодії програми - переконайтеся, що ваш додаток має голос.