首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android专用音频记录器

Android专用音频记录器
EN

Software Recommendation用户
提问于 2015-08-23 18:40:28
回答 3查看 619关注 0票数 11

我需要记录机械设备发出的声音。这些声音每隔几个小时随机出现一次,只持续大约1-3秒.

为了完成这一任务,我需要一个不断运行的音频记录器,但只有当音频存在时才会记录。有许多音频录音机是“声音激活”,但我没有找到任何将工作,因为当他们激活,我试图捕捉的声音已经结束。

要做到这一点,我需要一个应用程序,不断记录,但只防止音频“声音激活减去x秒”。如果“x”是固定的,那就没有问题了。

要求

  1. 安卓KitKat兼容
  2. 可以单独运行至少4小时。

优惠(无要求)

  1. 免费(免费)
  2. 操作过程中电池利用率低
  3. 可以运行至少12个小时(或更长时间)无人看管

最新消息:恭喜!我已经为他/她的回答授予了赏金。我仍在执行测试,以确定它是否可靠地适用于我的任务。也要感谢史蒂夫·巴恩斯的创造性回答。

因为我还在测试阶段,所以我愿意接受更多的答案。随着测试的进展,我会发布更多的更新。

EN

回答 3

Software Recommendation用户

发布于 2015-10-01 21:35:11

如果你正在寻找一个可以连续录制音频,跳过沉默,可以在无人值守的情况下运行4小时的录音录音机,那么我认为你应该看看智能语音记录仪。它符合你的要求,

  • 免费的
  • 能跑12个小时
  • 即使在显示器关闭时也能在后台进行记录(确保设备上有足够的磁盘空间)
  • 可以记录从8 kHz (电话质量)到44.1 kHz (CD质量)

来自Google Play商店的描述:

智能语音记录仪

智能语音记录器设计为高质量的长时间录音与跳过相对沉默的飞行.例如,你可以把它用于记录夜间睡眠谈话(或打鼾:),商务会议,日常保姆的一天,你如何唱歌或弹吉他,等等。太棒了!您可以使用它作为常规的语音记录器,具有简单和良好的用户界面。注意:这个应用程序不是呼叫记录器。在某些手机上可能无法正常工作。用户界面还没有为平板电脑优化。这种格式的录音不能通过文本/sms/mms发送。如果您有任何反馈,请随时通过电子邮件发送给我。功能:

  • 跳闸静音模式的自动和手动灵敏度控制(Beta)
  • 现场音频频谱分析仪
  • 采样率可调的波/pcm编码(8-44 kHz)
  • 背景录音(即使当显示器关闭时)
  • 麦克风增益校准工具
  • 保存/暂停/恢复/取消记录过程控制
  • 存储和目录更改(默认值: sdcard/SmartVoiceRecorder)
  • 剩余的录制时间显示在主屏幕上,仅受存储空间(和技术)的限制。限制每个文件2GB )
  • 易于使用的录音列表
  • 通过电子邮件、whatsapp、dropbox等发送/共享录音。
  • 一次单击将录音设置为铃声、警报或通知

此应用程序所需的权限为:

  • 互联网接入(用于显示广告和一些统计数据集)
  • 写入外部存储(以存储记录)
  • 记录音频
  • 唤醒锁(防止装置休眠)
  • 写入设置(用于设置默认的系统铃声/通知/警报)
  • 计费(应用程序内选项关闭广告)
票数 7
EN

Software Recommendation用户

发布于 2015-10-02 06:50:48

如果您可以使用笔记本而不是手机,那么您可以使用python + 吡喹酮。记录样本看起来如下:

代码语言:javascript
复制
"""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()

但是您可以很容易地修改它,以检查声音级别是否超过了给定的阈值,以及是否超过了它来将当前帧集记录到为时间和日期命名的文件中。

确定声级是否超过了给定的阈值应该简单到:

代码语言:javascript
复制
loudest = max([max(chunk) for chunk in frames])
if loudest > THRESHOLD:
   # Save your frame

但是,我会考虑使用一个dqueue来存储您的帧,一旦到达帧的长度,在将数据块推送到另一端之前,从一端弹出一个块,如果您正在记录保存该块,否则就弹出并丢弃。然后,在获取每个块时,只需检查该块的最大值,如果该块已超过该数据块,则设置一个与框架大小相同的计数器加上所需的溢出,如果没有当前打开的波形文件,则根据时间打开一个具有名称的文件,如果没有减少计数器(如果超过0),并在到达0时写入该文件,则打开该文件。

  • 免费
  • 安卓--我不认为有声音频已经移植到Android了,所以没有
  • 你的帧的大小将决定录音前的时间。您还可以在选定的时间内超过声音的结尾。
  • 文件名中的时间戳会让您看到声音是什么时候。

Python还可以用于绘制和分析结果文件,就像在这个博客中一样。

票数 3
EN

Software Recommendation用户

发布于 2015-10-03 08:26:00

只需使用自动录音装置,它有您想要的一切,包括自动记录时,有一些噪音。

票数 0
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/23261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档