Julia 中的声音激活录音
Posted
技术标签:
【中文标题】Julia 中的声音激活录音【英文标题】:Sound activated recording in Julia 【发布时间】:2021-07-14 16:15:27 【问题描述】:我正在使用 Julia 录制音频,并希望能够在音频信号超过一定音量后触发 5 秒的录制。到目前为止,这是我的记录脚本:
using PortAudio, SampledSignals, LibSndFile, FileIO, Dates
stream = PortAudiostream("HDA Intel PCH: ALC285 Analog (hw:0,0)")
buf = read(stream, 5s)
close(stream)
save(string("recording_", Dates.format(now(), "yyyymmdd_HHMMSS"), ".wav"), buf, Fs = 48000)
我是 Julia 和一般信号处理的新手。我怎样才能告诉它只有在音频超过指定的音量阈值时才开始录制?
【问题讨论】:
【参考方案1】:您需要测试您捕获的声音的平均振幅并采取相应措施。如果声音足够大,请保存,否则请冲洗并重复。
using PortAudio, SampledSignals, LibSndFile, FileIO
const hassound = 10 # choose this to fit
suprathreshold(buf, thresh = hassound) = norm(buf) / sqrt(length(buf)) > thresh # power over threshold
stream = PortAudioStream("HDA Intel PCH: ALC285 Analog (hw:0,0)")
while true
buf = read(stream, 5s)
close(stream)
if suprathreshold(buf)
save("recording.wav", buf, Fs = 48000) # should really append here maybe???
end
end
【讨论】:
谢谢@Bill,我做了一些修改,效果很好 您对追加的评论 - 什么意思?以上是关于Julia 中的声音激活录音的主要内容,如果未能解决你的问题,请参考以下文章