我有以下代码来加载.wav文件并播放它:
import base64
import winsound
with open('file.wav','rb') as f:
data = base64.b64encode(f.read())
winsound.PlaySound(base64.b64decode(data), winsound.SND_MEMORY)
它播放文件没问题,但现在我想提取一个' chunk'让我们说从233到300只播放那部分。
seg = data[233:300]
winsound.PlaySound(base64.b64decode(seg), winsound.SND_MEMORY)
我得到:TypeError: 'sound' must be str or None, not 'bytes'
答案 0 :(得分:0)
PlaySound()
期待一个完整形成的WAV文件,而不是一段PCM音频数据。从PlaySound()
的文档中,Python winsound
调用的基础函数:
SND_MEMORY标志表示lpszSoundName参数是指向WAVE文件的内存中图像的指针。
(强调补充)
我没有玩WAV文件的内部结构(尽管你感兴趣的是isn't too hard),但我建议使用更灵活的音频库,比如pygame' s。在那里,您可以使用music module及其set_pos
function或使用Sound
类来访问原始音频数据并按照您在问题中的建议进行剪切。