Flutter Audio

Flutter-плагин для записи речи

Команда Evrone — большие поклонники Google Flutter SDK, который предназначен для создания приложений для Android и iOS. Но когда мы работали над Medcorder, то столкнулись с проблемой: не было способа записать речь с помощью API, предоставляемых Google. Поэтому мы создали плагин записи звука.

Medcorder — это мобильное приложение для записи и расшифровки разговоров с врачами и другими медицинскими сотрудниками. Полученная информация может быть передана родственникам или другим специалистам, чтобы они не упустили ни одну из ключевых деталей консультации.

После того, как плагин для приложения был создан, основатель Medcoder предложил нам выпустить его как open-source решение. Что мы с искренним удовольствием и сделали.

О Flutter Audio

Flutter Audio состоит из трёх частей:

  • Интерфейс, который, как и сам Flutter, написан на Dart.
  • Нативный компонент, написанный на Objective-C, выполняет работу с высокой нагрузкой на iOS.
  • Для Android разработан эквивалент на Java.

Стоит отметить, что Flutter Audio изначально был создан и оптимизирован для сервисов распознавания речи Google, а интерфейс разработан с учетом простоты использования и не обеспечивает детального управления настройками записи. Нам нравится подход «инструмент должен делать что-то одно и делать это хорошо», поэтому мы не принимаем пулл-реквесты на изменение профилей аудио или раскрытие параметров записи. Но приятно видеть, что на GitHub много форков проекта, предназначенных для разных приложений, и мы будем с интересом наблюдать за ними.

Мы не знаем, каковы планы Google насчёт официальных возможностей аудиозаписи во Flutter, но очень довольны тем уровнем внимания, который получил Flutter Audio в сообществе.

Использовать Flutter Audio просто. Во-первых, вам понадобится экземпляр MedcorderAudio:

MedcorderAudio audioModule = new MedcorderAudio();

Затем вам нужно убедиться, что вы можете записывать звук на вашем устройстве и применять настройки звука, необходимые для записи речи. Мы используем метод initState следующим образом:

final String result = await audioModule.checkMicrophonePermissions();
if (result == 'OK') {
  await audioModule.setAudioSettings();
  setState(() {
    canRecord = true;
  });
}

Если всё в порядке, используйте audioModule, чтобы начать запись в обработчике событий, который вызывается по нажатию кнопки пользователем:

try {
  final String result = await audioModule.startRecord(filename);
  setState(() {
    isRecord = true;
  });
  print('startRecord: ' + result);
} catch (e) {
  print('startRecord: failed');
}

Остановить запись тоже легко:

final String result = await audioModule.stopRecord();
print('stopRecord: ' + result);
setState(() {
  isRecord = false;
});

Чтобы помочь вам разобраться, мы разработали пример приложения для iOS и Android. В частности, смотрите main.dart, который фактически взаимодействует с плагином.

Если вы нашли баг, пожалуйста, создайте issue, и мы постараемся устранить его, как только сможем.

Мы надеемся, что вы оцените Flutter Audio и он вам пригодится. Нам не терпится увидеть, какие проекты будут созданы с его помощью!

 

 

Мы рады, что поступает много Pull Request'ов на исправление проблем и багов. Основные проблемы, которые помогли решить контрибьюторы, связаны с совместимостью с последними версиями Android, многие предложения были приняты и сейчас используются.
Дмитрий Криволапов
Разработчик, Evrone
Связаться с нами
Нужна команда?
Давайте обсудим ваш проект
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.