如何在 Python 中用户定义的延迟后录制声音并播放?

Posted

技术标签:

【中文标题】如何在 Python 中用户定义的延迟后录制声音并播放?【英文标题】:How can I record a sound and play it back after a user-defined delay in Python? 【发布时间】:2016-08-17 14:03:43 【问题描述】:

我正在寻找可以录制声音并在一定延迟(例如 10 秒)后播放的 Python 代码。换句话说,我想经常听到(在我的耳机上)外面发生的事情,但有一定的延迟。

我在 GitHub (https://gist.github.com/larsyencken/5641402) 上找到了一个 Python 脚本,它应该可以满足我的需求。但是,当我运行脚本时,播放会在 5 秒后开始(默认延迟),但它会记录周围的一切并实时播放(没有任何延迟)。

【问题讨论】:

在 Stack Overflow 上寻求建议是题外话。您可以在softwarerecs.stackexchange.com 上提问,但一定要provide enough information 谢谢@greg-449。我刚刚在这里编辑了我的问题。 【参考方案1】:

这是一个使用 sounddevice 的示例,尽管您也可以使用其他 audio/sound 模块。

下面的示例根据变量 duration#seconds 录制来自麦克风的音频,您可以根据自己的要求对其进行修改。 使用标准音频输出(扬声器)播放相同的内容。 更多关于这个here

工作代码

import sounddevice as sd
import numpy as np
import scipy.io.wavfile as wav

fs=44100
duration = 10  # seconds
myrecording = sd.rec(duration * fs, samplerate=fs, channels=2, dtype='float64')
print "Recording Audio for %s seconds" %(duration)
sd.wait()
print "Audio recording complete , Playing recorded Audio"
sd.play(myrecording, fs)
sd.wait()
print "Play Audio Complete"

输出

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
Recording Audio for 10 seconds
Audio recording complete , Playing recorded Audio
Play Audio Complete
>>> 

【讨论】:

以上是关于如何在 Python 中用户定义的延迟后录制声音并播放?的主要内容,如果未能解决你的问题,请参考以下文章

Adobe AIR 动态声音和录制延迟问题

如何在 iOS 中录制声音?

添加到声音的延迟

保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS,Xcode 4)

如何在 Android 应用中录制声音

在 Java 中,如何录制发送到扬声器的声音输出? [复制]