我正在运行一个简单的脚本来在 pydub 中录制音频并回放。它正在回放,但回放后,它向我抛出分段错误,我不知道为什么。
import sounddevice as sd
import numpy as np
from pydub import AudioSegment
from pydub.playback import play
import wavio
def record_audio(duration=5, sample_rate=44100):
print("Recording...")
audio = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=2, dtype='int16')
sd.wait()
# Save the recorded audio as a WAV file
wavio.write("recorded.wav", audio, sample_rate, sampwidth=2)
print("Recording saved as recorded.wav")
def play_audio(file_path):
print("Playing back...")
audio = AudioSegment.from_wav(file_path)
play(audio)
print("Playback finished")
# Record and playback
record_audio()
play_audio("recorded.wav")
这是代码
python audio.py
Recording...
Recording saved as recorded.wav
Playing back...
[1] 25425 segmentation fault (core dumped) python audio.py
这是输出。有什么解决办法吗?我使用的是 Ubuntu 24.04 LTS
操作系统:Ubuntu 24.04.1 LTS x86_64 主机:Vostro 3590 内核:6.8.0-1012-oem 正常运行时间:1小时43分钟 包装:3095(dpkg)、61(冲泡)、6(平装)、40(即食) 外壳:zsh 5.9 分辨率:1920x1080 桌面版本:GNOME 46.0 WM:穆特 WM 主题:Adwaita 主题:Yaru-blue-dark [GTK2/3] 图标:雅鲁蓝[GTK2/3] 终端: 蒂利克斯 CPU:英特尔 i5-10210U (8) @ 4.200GHz GPU:英特尔 CometLake-U GT2 [超高清显卡] GPU:AMD ATI Radeon R5 M230 / R7 M260DX / Radeon 52 内存:5288MiB / 7662MiB
我尝试了其他模块,但是
simpleaudio
也是段错误,而pygame似乎对我来说避免了这个问题。老实说,我没有尝试任何事情,因为我不知道什么失败了。 ChatGPT 对我来说在这个问题上毫无用处。
你有安装什么玩法吗?您需要一些依赖项才能让 PyDub 根据我收集的信息工作。安装
libportaudio2
和 ffplay
或 pyaudio
修复了权限错误和设备错误。
但是我无法复制分段错误。您可以通过 GDB 运行此命令来向我们提供更多信息,以了解段错误发生的位置。也许使用 GDB 进行堆栈转储并向我们提供。