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 中的声音激活录音的主要内容,如果未能解决你的问题,请参考以下文章

CallKit 可以在交换通话后重新激活声音

在 C# 中的录音设备上播放声音

运筹系列70:julia的交互界面

在UIButton激活后设置延迟

如何激活office2016?

正在播放其他应用程序中的声音时录音停止