- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在使用PyAudio来开发轻型录音实用程序,该实用程序可以满足我计划中的应用程序的特定需求。我正在使用ASIO音频接口(interface)。我正在编写程序要做的是通过界面播放wav文件,同时记录界面的输出。该接口(interface)正在实时处理车载信号并更改音频。当我打算将此渲染的输出导入到DAW中时,我需要将输出与输入音频完美同步。使用DAW,我可以同时在界面中播放音频并记录输出。当我这样做时,它已在DAW中完美同步。我的实用程序的目的是能够从python脚本触发此操作。
通过蛮力方法,我想出了一个可行的解决方案,但是现在我陷入了一个魔术数字,并且不确定这是某种常数还是可以计算出的数值。如果是一个数字,我可以计算出这是理想的值,但我仍然想了解这两种方法的来源。
我的回调如下:
def testCallback(in_data, frame_count, time_info, status):
#read data from wave file
data = wave_file.readframes(frame_count)
#calculate number of latency frames for playback and recording
#1060 is my magic number
latencyCalc = math.ceil((stream.get_output_latency() + stream.get_input_latency()) * wave_file.getframerate()) + 1060
#no more data in playback file
if data == "":
#this is the number of times we must keep the loop alive to capture all playback
recordEndBuffer = latencyCalc / frame_count
if lastCt < recordEndBuffer:
#return 0-byte data to keep callback alive
data = b"0"*wave_file.getsampwidth()*frame_count
lastCt += 1
#we start recording before playback, so this accounts for the initial "pre-playback" data in the output file
if firstCt > (latencyCalc/frame_count):
wave_out.writeframes(in_data)
else:
firstCt += 1
return (data, pyaudio.paContinue)
latencyCalc = math.ceil((stream.get_output_latency() + stream.get_input_latency()) * wave_file.getframerate()) + 1060
最佳答案
由于不允许发表评论,因此我在这里问您:stream.get_output_latency() + stream.get_input_latency()) * wave_file.getframerate()
的值是什么?以及您如何首先获得1060这个数字?
在您已标记的代码行中:latencyCalc = math.ceil((stream.get_output_latency() + stream.get_input_latency()) * wave_file.getframerate()) + 1060
,您只需在总延迟中添加额外的1060帧。从您的描述中,我不清楚您为什么这样做,但是我假设您已经测量了结果文件中的总延迟,并且除了输入延迟+输出延迟之和之外,总是有恒定数量的额外帧。因此,您是否认为这种额外的延迟可能是由于处理造成的?您说您要对输入的音频信号进行一些处理。处理当然要花一些时间。尝试对未更改的输入信号执行相同的操作,然后查看是否减少/消除了额外的延迟。甚至您应用程序的其他部分,例如如果应用程序具有GUI,则所有这些事情都会减慢记录速度。您没有完全描述您的应用程序,但是我猜测额外的延迟是由您的代码以及代码所执行的操作引起的。为什么“魔数”总是一样?因为您的代码始终是相同的。
简历:“魔术数字”代表什么?显然,除了总往返延迟之外,它还表示一些额外的延迟。
是什么导致这种额外的延迟?原因很可能是您代码中的某个地方。您的应用程序正在做的事情需要花费一些额外的时间,因此会造成一些额外的延迟。我想到的唯一可能的另一件事是,您在设置中的某处添加了一些额外的“静默期”,因此您也可以检查一下。
关于python - PyAudio-同步播放和录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22879114/
我正在尝试运行以下 python 程序,但出现了一些错误。该程序旨在将实时语音转换为文本,它使用的是我使用 CMUSphinx 训练的声学模型。 编码: #!/usr/bin/env python i
我一直无法找到在我的机器上安装 PyAudio 的修复程序。我尝试了几种不同的解决方案,并且确实使用自制软件安装了必备库“portaudio”。我还寻找了出现在输出底部的 gcc 错误的解决方案,而这
我在学校项目中使用 pyaudio,我试图让声音一次只在一个扬声器上播放。我的代码是这样的: import pyaudio p = pyaudio.PyAduio() def play_wave(st
我有一个播放 wav 文件的非常基本的 pyaudio 代码。 open_wave = wave.open("tone_silence/l0r1d0_500.wavc",'rb') p
我使用 pyaudio 库从声卡中读取声音。我使用以下代码 stream = pyaudio.PyAudio().open(format=pyaudio.paInt16, channels=2,
我正在尝试使用 pyaudio 构建一个应用程序来记录扬声器和麦克风的声音,但我只是不知道如何同时记录它们。我尝试启用立体声混音器,但它没有成功,因为我只能听扬声器发出声音。我使用的这段代码使用 py
我正在尝试使用麦克风从盖革计数器收集数据并使用 Python 对其进行处理。但是,我使用的是大学计算机,因此不允许我安装此工作似乎必需的 PyAudio 模块 ( Python read microp
是否可以使用 pyaudio 演奏和弦? 最佳答案 当然可以! 只需生成结果并将其传递给播放器即可。 This article covers a method to do it. 以下是示例代码,以防
我在 PyAudio 网站上看到了录制固定长度录音的录音教程,但我想知道如何对非固定长度的录音做同样的事情?基本上,我想创建按钮来开始和结束录音,但我还没有找到任何关于此事的信息。有什么想法,我不是在
我正在尝试创建一个 python 程序来使用 PyAudio 和 Ubuntu 16.04 录制和循环音轨。我收到一条错误消息,提示“未找到默认输入设备”。当我查询默认设备并尝试列出所有设备时,我得到
为了录制一个 2 秒的 wav 文件,我使用了 PyAudio(带有 Pyzo)和以下经典代码来录制声音并保存它: import pyaudio import wave chunk = 1024 FO
我目前面临一个难题。我需要在法语 Windows 环境中使用 Pyaudio,并且音频设备的名称默认包含 é 或 è。 这是出现特殊字符时出现的错误: u=self.p.get_device_i
我目前正在使用PyAudio来开发轻型录音实用程序,该实用程序可以满足我计划中的应用程序的特定需求。我正在使用ASIO音频接口(interface)。我正在编写程序要做的是通过界面播放wav文件,同时
尝试使用 pip 安装 PyAudio 包显示错误,而其他包安装正常。我正在使用 python 3.7。为什么会出现此错误? C:\Users\Himanshu>pip install PyAudio
我正在 Intel Edison 开发板上试用 pyaudio,但内置测试失败了。单独录制和播放在我的设置下工作正常,但如果我尝试将输入连接到输出,则会出现错误。 File "wire_full.py
我正在使用 python 和 pyaudio 使用回调方法流式传输纯正弦音,以便稍后通过用户输入调制声音。一切都很好,除了当我运行代码时,我收到 1-2 秒的与警告消息相关的爆裂声ALSA lib p
我已经使用这个压缩包构建并安装了 PortAudio:'pa_stable_v19_20071207.tar.gz' 完成此步骤后,当我尝试通过此 URL 中的压缩包安装 PyAudio 时: htt
我一直在尝试为语音识别项目安装 PyAudio,但我尝试过的所有方法都没有奏效。我尝试安装最新版本的 python (3.7) 只是为了 noobishly 发现 pyaudio 与它不兼容,现在我正
我正在尝试创建一个简单的应用程序,该应用程序加载 wav 文件(键盘的每个音符一个)并在按下(或播放)MIDI 音符时播放特定的文件。到目前为止,我已经在两个单独的线程中使用 mido 创建了一个 m
我正在尝试使用 pyaudio 播放流音频 我正在获取一些数据,对其进行处理,然后将它们放入音频流中。 数据速率相当恒定,但有一些抖动。 我可以在日志中看到数据速率是恒定的并且处理是实时的。 Demo
我是一名优秀的程序员,十分优秀!