Как стать автором
Обновить

Как встроить распознавание звуков в ваше iOS приложение на Swift с использованием SoundAnalysis

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров377

Введение

В мире, где ваш телефон умеет угадывать настроение по плейлисту, почему бы не научить его распознавать звуки вокруг? С помощью фреймворка SoundAnalysis это проще, чем кажется. Мы расскажем, как легко и с минимальными потерями для душевного здоровья интегрировать распознавание звуков в ваше iOS-приложение.

Основные компоненты SoundAnalysis

  • SNAudioFileAnalyzer: Ваш личный детектив по звукам, который досконально исследует аудиофайл.

  • SNClassifySoundRequest: Помощник по распознаванию звуков. Дайте ему модель машинного обучения, и он сделает остальное.

  • SNResultsObserving: Протокол, который сделает так, чтобы ваш код знал о каждом успешном или провальном моменте анализа.

Шаги по реализации классификации звуков

Подготовка модели машинного обучения

Здесь у вас есть два варианта. Вы можете использовать одну из стандартных моделей, предоставляемых Apple, которая уже умеет распознавать типичные звуки (например, аплодисменты, лай собаки и т.д.). Однако, если вы хотите, чтобы ваше приложение распознавало специфические звуки, например, голос вашего кота, вам нужно создать свою модель машинного обучения. Это может быть сделано с помощью инструментов вроде Create ML, которые позволяют обучить модель на нужном наборе данных.

Настройка анализатора

Создайте экземпляр SNAudioFileAnalyzer и укажите путь к аудиофайлу:

let audioFileURL = URL(fileURLWithPath: "path_to_audio_file")
let analyzer = try SNAudioFileAnalyzer(url: audioFileURL)

Создание и настройка запроса классификации звуков

В нашем случае мы будем использовать стандартный запрос, предоставляемый Apple, который позволяет классифицировать звуки с использованием уже готовой модели:

let soundRequest = try SNClassifySoundRequest(classifierIdentifier: .version1)

Реализация наблюдателя для обработки результатов

Реализуйте протокол SNResultsObserving, чтобы обрабатывать результаты анализа:

class SoundResultsObserver: NSObject, SNResultsObserving {
    func analyzeRequest(_ analysisRequest: SNRequest, didProduce analysisResult: SNResult) {
        guard let classificationResult = analysisResult as? SNClassificationResult else { return }

        guard let topClassification = classificationResult.classifications.first else { return }

        let analysisStartTime = classificationResult.timeRange.start.seconds
        let readableTime = String(format: "%.2f", analysisStartTime)
        print("Результат анализа для аудио на времени: \(readableTime) сек.")

        let confidencePercentage = topClassification.confidence * 100.0
        let confidenceString = String(format: "%.2f%%", confidencePercentage)

        print("\(topClassification.identifier): уверенность \(confidenceString).\n")
    }
}

Запуск анализа

Запустите процесс анализа, связав запрос с наблюдателем:

let observer = SoundResultsObserver()
try analyzer.add(soundRequest, withObserver: observer)
analyzer.analyze()

Расширенные возможности

  • Анализ в реальном времени: SoundAnalysis также поддерживает потоковый анализ звуков, делая ваш телефон настоящим аудиошпионом.

  • Параллельный анализ: Запускайте несколько запросов одновременно, чтобы покрыть все возможные сценарии.

  • Обработка ошибок и исключений: Обрабатывайте ошибки, чтобы приложение было стабильным и не падало при первой же неполадке.

Заключение

Создать приложение, которое распознает звуки, оказывается, не так сложно, как кажется. С помощью SoundAnalysis вы можете добавить в свое приложение способность понимать мир вокруг, а это — шаг к созданию чего-то действительно умного и полезного. И кто знает, может, скоро ваш телефон начнет подсказывать вам, что за странный звук доносится из соседней комнаты.

Теги:
Хабы:
+3
Комментарии0

Публикации

Истории

Работа

iOS разработчик
21 вакансия
Swift разработчик
29 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн