Распознавание звука с iOS 7?

Я хочу создать приложение, которое реагирует на звук, который вы издаете, когда выдуваете свечи на день рождения. Это не распознавание речи как таковое (этот звук не является словом на английском языке), и очень любезный Халле из OpenEars сказал мне, что использование этой платформы невозможно. (Спасибо за ваш быстрый ответ, Галле!)

Есть ли способ "научить" приложение звучать так, чтобы приложение впоследствии могло его распознать?

Как бы я пошел по этому поводу? Это вообще выполнимо? Я схожу с ума или беру на себя задачу, которая гораздо сложнее, чем я думаю? Какой должна быть моя домашняя работа?

2 ответа

Решение

Хорошей новостью является то, что это достижимо, и вам не нужны сторонние фреймворки -AVFoundation это все, что вам действительно нужно.

Есть хорошая статья от Mobile Orchard, которая охватывает детали, но несколько неизбежно для четырехлетнего, есть некоторые ошибки, о которых нужно знать.

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

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    
  2. Поиграйте с порогом в этой строке:

    if (lowPassResults > 0.95)
    

    я нашел 0.95 быть слишком высоким и получить лучшие результаты, установив его где-то между 0,55 и 0,75. Точно так же я играл с 0.05 множитель в этой строке:

    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
    

Использование простых пороговых значений для уровней энергии, вероятно, будет недостаточно надежным для вашего случая использования.

Хороший способ добиться этого - сначала извлечь из звукового потока некоторые свойства, характерные для звука выдуваемых свечей. Затем используйте алгоритм машинного обучения для обучения модели на основе обучающих примеров (набор записей звука, который вы хотите распознать), который затем можно использовать для классификации фрагментов звука, поступающего в ваш микрофон в режиме реального времени при использовании приложения.,

Принимая во внимание возможные звуки окружающей среды, которые вы слышите, когда вы зажигаете свечи (дни рождения всегда шумные, не так ли?), Может быть трудно обучить модель, которая достаточно устойчива к этим фоновым звукам. Это не простая проблема, если вы заботитесь о точности.

Хотя это может быть выполнимо: простите мне саморекламу, но моя компания разработала SDK, который дает ответ на вопрос, который вы задаете: "Есть ли способ" научить "приложение звучать так, чтобы приложение впоследствии могло его распознать Это?" Я не уверен, будет ли работать специфический звук выдуваемых свечей, поскольку SDK был в первую очередь нацелен на приложения, использующие несколько ударных звуков, но он все еще может работать для вашего случая. Вот ссылка, где вы также найдете демонстрационную программу, которую вы можете скачать и попробовать, если хотите: SampleSumo PSR SDK

Другие вопросы по тегам