Civil &: строительная инженерия
Использование API распознавания речи Ios для голосовых команд в приложениях
Table of Contents
Голосовые команды: будущее взаимодействия приложений iOS
Голосовые команды принципиально меняют то, как пользователи взаимодействуют с приложениями iOS, переходя от простых интерфейсов нажатия и прокрутки к интуитивно понятному управлению. Используя API распознавания речи iOS, разработчики могут интегрировать возможности распознавания речи в тексте в реальном времени, которые делают приложения более доступными, эффективными и привлекательными. Включает ли голосовая навигация для фитнес-трекера, позволяет ли бесплатная запись в приложении для повышения производительности или обеспечивает функции доступности для пользователей с нарушениями моторики, API распознавания речи обеспечивает надежную, готовую к производству основу. В этой статье исследуется полный процесс реализации голосовых команд в приложениях iOS, от начальной настройки и обработки разрешений до продвинутой оптимизации, лучших практик и реальных вариантов использования.
Посмотреть iOS Speech Recognition API
API распознавания речи iOS, часть фреймворка Speech, позволяет приложениям конвертировать живое или предварительно записанное аудио в текст. Он поддерживает более 60 языков и диалектов, при этом механизм распознавания работает либо на устройстве (для поддерживаемых языков), либо на серверах Apple. Приоритетное распознавание на устройстве отдает приватности и работает в автономном режиме, в то время как распознавание на сервере часто обеспечивает более высокую точность для сложных предложений. Основным классом является SFSpeechRecognizer, который управляет процессом распознавания, и SFSpeechAudioBufferRequest для живого аудио ввода.
К числу ключевых возможностей относятся:
- Частичные результаты в реальном времени (полезны для прогрессивного обнаружения команд).
- В этом случае, если вы не можете найти словарь, то вы можете использовать его в качестве SFSpeechRecognizer's .
- Интеграция с AVAudioEngine для захвата и буферизации звука.
Важно отметить, что API предназначен для команд, инициированных пользователем, а не для непрерывных сценариев с постоянным слушанием (Apple накладывает максимум одну минуту на одну задачу распознавания). Это ограничение поощряет преднамеренное взаимодействие и сохраняет время автономной работы. Для дальнейшего чтения обратитесь к официальной документации по рамкам речи и сессии WWDC 2019 по распознаванию речи .
Настройка распознавания речи в вашем приложении
Интеграция распознавания речи требует тщательной обработки разрешений и настройки аудиосессии. Ниже приведены основные шаги, дополненные передовыми методами.
1.Подготовьте свой проект
- Добавьте Речь в возможности подписи вашего проекта.
- Включите 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 категорию и .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 для извлечения ключевых слов и фильтрации шума.
- Создание командного словаря с синонимами (например, «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 минута на одну задачу; для более длительных сессий, цепных задач.
Расширенные функции: распознавание на устройстве и пользовательские словари
Начиная с iOS 13, Apple представила распознавание речи на устройстве для отдельных языков (в настоящее время английский, французский, немецкий, японский, корейский, китайский, испанский и т. Д. Преимущества включают отсутствие зависимости от сети, снижение задержки и повышение конфиденциальности - аудио не покидает устройство. Для включения распознавания на устройстве:
guard let recognizer = SFSpeechRecognizer() else { return }
if recognizer.supportsOnDeviceRecognition {
request.requiresOnDeviceRecognition = true
}
Примечание: Точность на устройстве может быть немного ниже, чем на сервере, особенно для названных объектов или необычного словаря. Для приложений с пользовательским жаргоном (например, медицинские термины, названия продуктов), рассмотрите возможность добавления списка обычного словаря через SFSpeechRecognizer или путем обучения встроенного распознавателя речи через , , .
Другой усовершенствованный метод заключается в использовании 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 см. Запрос авторизации .
5. Реализуйте обратную связь
Не все пользователи могут или хотят использовать голос. Всегда предоставляйте альтернативный сенсорный или клавиатурный ввод. Для доступности убедитесь, что голосовые команды могут быть вызваны через Switch Control или VoiceOver.
Реальные примеры использования и вдохновение
- Навигационные приложения: «Возьми меня домой» или «Покажи близлежащие заправки» с помощью карт SDK.
- Производительность и усилитель; Заметка-Занятие: «Создать новую заметку» или «Добавить задачу», интегрированную с Core Data или CloudKit.
- Умные домашние контроллеры: «Выключите свет в гостиной» с помощью HomeKit.
- Фитнес и усилие; Тренировка: «Начните 5-минутное охлаждение» или «Лог 10 отжиманий».
- E-Learning: Голосовые ответы на флеш-карты или викторины.
Для получения дополнительной информации, изучите ссылку SFSpeechRecognizer API и SpeakToMe образец кода от Apple.
Вывод: Расширяйте возможности своих пользователей с помощью голоса
API распознавания речи iOS - это зрелый, хорошо документированный инструмент, который встраивает силу голосовых команд в любое приложение. От бортового до повседневного использования, хорошо реализованные функции голоса уменьшают трение, улучшают доступность и радуют пользователей. Следуя шагам настройки, лучшим практикам и передовым методам, изложенным в этой статье, вы можете создавать приложения, которые слушают - и отвечают - способами, которые кажутся естественными и легкими.
Начните с малого: интегрируйте одну команду («Помощь» или «Возврат») в следующее обновление, затем расширяйте на основе обратной связи с пользователем. По мере улучшения распознавания на устройстве и добавления новых языков потенциал для голосового управления iOS будет только расти. Будущее взаимодействия приложений говорят — убедитесь, что ваше приложение имеет голос.