python - 如何使用python无限播放 “.wav”文件

标签 python audio pyaudio wave

我正在尝试无限播放“.wav”文件以在实验中使用。

我正在使用pyaudio网站(http://people.csail.mit.edu/hubert/pyaudio/)的脚本,但是它只播放5秒钟。

我尝试使用下面的代码,但是播放了几秒钟。

import pyaudio
import wave

while True:
    CHUNK = 20*100

    wf = 
    wave.open('Metano_Ref_Lockin=SR830_mod=0.460V_freq=3936_PP=20_NP=100.wav', 'rb')
    data = wf.readframes(CHUNK)

   p = pyaudio.PyAudio()

   stream = p.open(format=pyaudio.paInt16,
            channels=wf.getnchannels(),
            rate=wf.getframerate(),
            output_device_index=4,
            output=True)


   while data != '':
      stream.write(data)
      data = wf.readframes(CHUNK)

   stream.stop_stream()
   stream.close()
   p.terminate()

另一方面,此代码仍然有效,但信号并不均匀(会出现一些噪音)。
import pyaudio
import wave

CHUNK = 20*100

wf = wave.open('Metano_Ref_Lockin=SR830_mod=0.460V_freq=3936_PP=20_NP=100.wav', 'rb')
data = wf.readframes(CHUNK)

p = pyaudio.PyAudio()

stream = p.open(format=pyaudio.paInt16,
            channels=wf.getnchannels(),
            rate=wf.getframerate(),
            output_device_index=4,
            output=True)

while data != '':
    stream.write(data)

stream.stop_stream()
stream.close()
p.terminate()

我希望一个统一的信号可以无限地再现。
谢谢。

最佳答案

您的数据比较应该是

while data != b'':
    ...

或更简单的变体(将空字符串强制转换为False):
while data:
    ...

另外,您确实应该在循环之间重用wfstreamp:
import pyaudio
import wave

CHUNK = 2 ** 11

wf = wave.open('Metano_Ref_Lockin=SR830_mod=0.460V_freq=3936_PP=20_NP=100.wav', 'rb')

p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
        channels=wf.getnchannels(),
        rate=wf.getframerate(),
        output=True)


while True:
    wf.rewind()

    data = wf.readframes(CHUNK)
    while data:
        stream.write(data)
        data = wf.readframes(CHUNK)

wf.close()
stream.stop_stream()
stream.close()
p.terminate()

关于python - 如何使用python无限播放 “.wav”文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265316/

相关文章:

python - 如何从Python MySQL数据库中获取数据到文本框中?

python - 如何从视频中提取音频?

Python语音识别麦克风不识别语音

python - 如何安装 PyAudio 0.2.11 Fedora

python - 使用 PyAudio 录制扬声器输出

python - 从文件读取时类型错误 :a bytes-like object is required, 而不是 'str'

python - 带有圆圈表示人口规模的热图

python - 为什么 python Wnck window.activate(int(time.time()))

c++ - 声音多线程

database - 上传声音文件到Cassandra服务器?