1 500 000 000 – количество людей с потерей слуха в мире. Это почти 20% населения Земли! (источник: who.int)

Недавно я экспериментировал с Apple Sound Classification API, и результаты на Apple Watch довольно многообещающие. Итак, я решил выпустить приложение BuzzWatch и соответствующий исходный код, чтобы другие могли использовать его в качестве справочного примера; и создайте больше вспомогательных технологий, чтобы помочь другим.

Приложение Watch прослушивает выбранные пользователем звуки (например, детский плач, сирена, автомобильный гудок) в фоновом режиме. Он вибрирует, чтобы уведомить людей с нарушениями слуха, когда это произойдет. Есть 300+ звуков, которые он может понять.

Вот 5 главных уроков, извлеченных в этом путешествии:

  1. Классификация звука на удивление зрелая с низким уровнем ложных срабатываний. В моем случае аудиопоток с Apple Watch анализируется на лету на наличие таких звуков, как автомобильные гудки и сирены. Время обнаружения тоже довольно хорошее, менее 10 мс.
  2. Тактильная обратная связь действительно полезна, но о ней часто забывают при проектировании взаимодействия с пользователем. У инженеров есть детальный контроль над типом вибрации на iOS с помощью фреймворка UIFeedbackGenerator (он пока недоступен на watchOS). BuzzWatch может использовать только стандартную вибрацию для всех типов важных звуков. Я не мог заставить его работать как навигация Apple Maps, где вы можете настроить тактильный опыт. Я надеюсь, что Apple улучшит watchOS в этой области. Тактильная обратная связь очень удобна для носимых устройств. (Интересно, лучше ли Wear OS 3.5 на Android… время для Pixel Watch?)
  3. Одно важное напоминание об использовании тактильных сигналов с AVAudioSession: когда вы записываете звук, системные звуки / тактильные сигналы (например, уведомления) отключаются. Вы можете переопределить его, используя session.setAllowHapticsAndSystemSoundsDuringRecording(true). Это было сложно обнаружить, потому что аудиозапись на самом деле не связана с тактильными вещами, и трудно установить эту связь при отладке.
  4. SwiftUI навязывают нам все больше и больше вариантов использования. Это началось с разработки виджетов в прошлом году, а теперь, с watchOS 9.0, вы даже не можете начать новый проект watchOS с использованием Storyboard на Xcode 14. Если у вас уже есть код, написанный для WatchKit, и традиционный пользовательский интерфейс на основе раскадровки, пора приступить к планированию миграции. В этом проекте я начал с Xcode 13 с раскадровкой; но в итоге пришлось сдаться и переделать все в приложении для часов с помощью SwiftUI.
  5. Не думайте, что ОС всегда ведет себя правильно, особенно с версиями .0. Я допустил эту ошибку, когда пытался настроить пользовательское уведомление пользователя на watchOS. После долгого биения головой о стену выяснилось, что с кодом все в порядке. Пользовательский вид уведомлений стабильно работает в watchOS 8.5, но вот watchOS 9.0 просто не работает. В конце концов, я отправил отчет об ошибке в Apple, надеясь, что они когда-нибудь ее исправят. ¯\_(ツ)_/¯

Я надеюсь, что эта запись поможет. Ваше здоровье.