Специализированный аудио-рекордер для Android

Мне нужно записать звуки, исходящие от механического оборудования. Эти звуки возникают случайным образом каждые несколько часов и длятся примерно 1-3 секунды.

Для выполнения этой задачи мне нужен аудиорекордер, который постоянно работает, но записывает только при наличии звука. Есть много аудиомагнитофонов, которые «активируются голосом», но я не нашел ни одного, который будет работать, потому что к тому времени, когда они активируются, звуки, которые я пытаюсь записать, заканчиваются.

Для этого мне нужно приложение, которое постоянно записывает, но сохраняет звук только после «активации звука минус x секунд». Это не проблема, если 'x' фиксирован.

Требования

  1. Совместимость с Android KitKat
  2. Может работать не менее 4 часов без присмотра

Предпочтения (не обязательные)

  1. Бесплатно (бесплатно)
  2. Низкий расход батареи во время работы
  3. Может работать не менее 12 часов (или дольше) без присмотра

Обновление: поздравляю! Я присудил награду @4mohit за его/ее ответ. Я все еще провожу тестирование, чтобы убедиться, что оно надежно работает для моей задачи. Спасибо также Стиву Барнсу за его творческий ответ.

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

Ответы (3)

Если вы ищете диктофон, который может записывать звук непрерывно, пропуская тишину и может работать в течение 4 часов без присмотра, то я думаю, вам стоит присмотреться к Smart Voice Recorder . Он соответствует вашим требованиям,

  • Быть бесплатным
  • Может работать 12 часов
  • Возможность записи в фоновом режиме, даже когда дисплей выключен (убедитесь, что на вашем устройстве достаточно места на диске)
  • Может записывать от 8 кГц (качество телефона) до 44,1 кГц (качество CD)

Из описания в магазине Google Play:

Умный диктофон

Скриншот интеллектуального диктофона, записывающего в данный момент

Умный диктофон предназначен для высококачественной записи звука в течение длительного времени с пропуском относительной тишины на лету. Например, вы можете использовать его для записи ночных разговоров во сне (или храпа :)), деловых встреч, обычного дня вашей няни, того, как вы поете или играете на гитаре и так далее. Это невероятно! И вы можете использовать его как обычный диктофон с простым и приятным пользовательским интерфейсом. Попробуйте! :)

ПРИМЕЧАНИЕ. Это приложение не является регистратором звонков. Может не работать должным образом на некоторых телефонах. Пользовательский интерфейс еще не оптимизирован для планшетов. Записи в этом формате не могут быть отправлены через текст/смс/ммс. Пожалуйста, не стесняйтесь присылать мне отзывы по электронной почте, если они у вас есть.

Функции:

  • автоматическое и ручное управление чувствительностью для режима «Пропустить тишину» (бета-версия)
  • анализатор спектра живого звука
  • кодирование wave/pcm с регулируемой частотой дискретизации (8-44 кГц)
  • запись в фоновом режиме (даже при выключенном дисплее)
  • инструмент для калибровки усиления микрофона
  • сохранение/пауза/возобновление/отмена управления процессом записи
  • хранилище и изменение каталога (по умолчанию: sdcard/SmartVoiceRecorder)
  • оставшееся время записи отображается на главном экране, ограничено только доступным пространством на вашем хранилище (и техническим ограничением 2 ГБ на файл)
  • простой в использовании список записей
  • отправить / поделиться записью по электронной почте, WhatsApp, Dropbox и т. д.
  • установить запись в качестве мелодии звонка, будильника или уведомления в один клик

Разрешения, необходимые этому приложению:

  • доступ в Интернет (для показа рекламы и сбора некоторой статистики)
  • запись на внешнее хранилище (для хранения записей)
  • запись аудио
  • блокировка пробуждения (для предотвращения перехода устройства в спящий режим)
  • запись настроек (для возможности установить системную мелодию звонка/уведомления/будильника по умолчанию)
  • биллинг (для возможности отключения рекламы в приложении)
Спасибо за рекомендацию. К сожалению, почти все эти диктофоны пропустят первые 250 мс до 1 с записи и, следовательно, не будут работать для этого приложения. Это связано с тем, что они фактически не начинают запись до тех пор , пока не обнаружат достаточное количество звука. Вы знаете, будет ли это конкретное приложение работать для заявленной цели?
Да, он точно может работать, он не активируется голосом, поэтому может записывать звук в течение длительного времени.
И он может удалить все пустое пространство из записи. И также имеет анализатор спектра живого звука.
Поздравляю! Я присудил награду @4mohit за этот ответ.

Если вы можете использовать ноутбук, а не мобильный телефон, вы можете сделать это с помощью python + pyaudio . Образец записи выглядит так:

"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""

import pyaudio
import wave

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("* recording")

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

print("* done recording")

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()

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

Определить, превысил ли уровень звука заданный порог, должно быть так же просто, как:

loudest = max([max(chunk) for chunk in frames])
if loudest > THRESHOLD:
   # Save your frame

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

  • Свободно
  • Android Я не думаю, что pyaudio был портирован на Android, так что нет.
  • Размер вашего кадра будет определять количество времени до записи звука. Вы также можете превысить конец звуков на выбранное время.
  • Отметки времени в именах файлов позволят вам увидеть, когда были звуки.

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

Очень хорошо. Это общедоступный скрипт или вы его сами придумали?
Пример скрипта легко доступен - вам нужно немного подправить, чтобы получить то, что вам нужно, но вы сможете сделать это довольно легко.
Вас также может заинтересовать zulko.github.io/blog/2014/07/04/… , который использует аналогичные механизмы для определения важных частей видео футбольных матчей.
Спасибо за креативные идеи, Стив!

просто используйте Automatic Audio Recorder , в нем есть все, что вы ищете, включая автоматическую запись, когда есть шум.

рис

Приложение не обновлялось более 2,5 лет. Он все еще надежно работает на Kitkat (особенно с учетом SD-карты)? Соответствует ли он всем остальным требованиям, например, низкое потребление батареи (насколько низкое, согласно вашему опыту/информации)? Что делает его рекомендуемым (предпочтительно на основе личного опыта)? Пожалуйста , прочитайте нашу дискуссию о том, что делает ответ качественным, и посмотрите, сможете ли вы улучшить свой пост. Спасибо!