簡體   English   中英

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

[英]How to play infinitely a “.wav” file using python

我試圖在我的實驗中無限地播放“.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 inbetween循環:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM