我需要记录机械设备发出的声音。这些声音每隔几个小时随机出现一次,只持续大约1-3秒.
为了完成这一任务,我需要一个不断运行的音频记录器,但只有当音频存在时才会记录。有许多音频录音机是“声音激活”,但我没有找到任何将工作,因为当他们激活,我试图捕捉的声音已经结束。
要做到这一点,我需要一个应用程序,不断记录,但只防止音频“声音激活减去x秒”。如果“x”是固定的,那就没有问题了。
要求
优惠(无要求)
最新消息:恭喜!我已经为他/她的回答授予了赏金。我仍在执行测试,以确定它是否可靠地适用于我的任务。也要感谢史蒂夫·巴恩斯的创造性回答。
因为我还在测试阶段,所以我愿意接受更多的答案。随着测试的进展,我会发布更多的更新。
发布于 2015-10-01 21:35:11
如果你正在寻找一个可以连续录制音频,跳过沉默,可以在无人值守的情况下运行4小时的录音录音机,那么我认为你应该看看智能语音记录仪。它符合你的要求,
来自Google Play商店的描述:
智能语音记录仪

智能语音记录器设计为高质量的长时间录音与跳过相对沉默的飞行.例如,你可以把它用于记录夜间睡眠谈话(或打鼾:),商务会议,日常保姆的一天,你如何唱歌或弹吉他,等等。太棒了!您可以使用它作为常规的语音记录器,具有简单和良好的用户界面。注意:这个应用程序不是呼叫记录器。在某些手机上可能无法正常工作。用户界面还没有为平板电脑优化。这种格式的录音不能通过文本/sms/mms发送。如果您有任何反馈,请随时通过电子邮件发送给我。功能:
此应用程序所需的权限为:
发布于 2015-10-02 06:50:48
如果您可以使用笔记本而不是手机,那么您可以使用python + 吡喹酮。记录样本看起来如下:
"""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但是,我会考虑使用一个dqueue来存储您的帧,一旦到达帧的长度,在将数据块推送到另一端之前,从一端弹出一个块,如果您正在记录保存该块,否则就弹出并丢弃。然后,在获取每个块时,只需检查该块的最大值,如果该块已超过该数据块,则设置一个与框架大小相同的计数器加上所需的溢出,如果没有当前打开的波形文件,则根据时间打开一个具有名称的文件,如果没有减少计数器(如果超过0),并在到达0时写入该文件,则打开该文件。
Python还可以用于绘制和分析结果文件,就像在这个博客中一样。
发布于 2015-10-03 08:26:00
只需使用自动录音装置,它有您想要的一切,包括自动记录时,有一些噪音。

https://softwarerecs.stackexchange.com/questions/23261
复制相似问题