如何在python sounddevice中使用OutputStream播放声音文件?

Khaled Abdulazim |

目标是同时播放两个声音文件,因此该sounddevice.play功能不是一个选项。我相信我应该OutputStream为每个文件制作一个现在,我一直在努力争取一个OutputStream人上班。请帮忙。

到目前为止,我的代码:

import soundfile as sf
import sounddevice as sd

data, fs = sf.read('sound_file.wav', dtype='float32')

def callback(outdata, frames, time, status):
    outdata[:] = data

with sd.OutputStream(callback=callback):
               pass

编辑:切换到RawOutputStream

import soundfile as sf
import sounddevice as sd

wf = sf.SoundFile('sound_file.wav')

def callback(outdata, frames, time, status):
    data = wf.buffer_read(frames, dtype='float32')
    if len(data) <= 0:
        raise sd.CallbackAbort
    if len(outdata) > len(data):
        raise sd.CallbackAbort #wrong obviously
    outdata[:] = data

with sd.RawOutputStream(channels=wf.channels,
                        callback=callback) as stream:
    while stream.active:
        continue
Khaled Abdulazim |
import soundfile as sf
import sounddevice as sd
import threading

def _play(sound):
    event =threading.Event()

    def callback(outdata, frames, time, status):
        data = wf.buffer_read(frames, dtype='float32')
        if len(outdata) > len(data):
            outdata[:len(data)] = data
            outdata[len(data):] = b'\x00' * (len(outdata) - len(data))
            raise sd.CallbackStop
        else:
            outdata[:] = data

    with sf.SoundFile(sound) as wf:
        stream = sd.RawOutputStream(samplerate=wf.samplerate,
                                    channels=wf.channels,
                                    callback=callback,
                                    blocksize=1024,
                                    finished_callback=event.set)
        with stream:
            event.wait()

def _playsound(sound):
    new_thread = threading.Thread(target=_play, args=(sound,))
    new_thread.start()

_playsound('sounds_file.wav')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何播放声音文件?

来自分类Dev

如何在Swift 2中播放声音文件

来自分类Dev

如何使用 vbscript 从目录中随机播放声音文件

来自分类Dev

如何在Android中无限循环播放声音文件?

来自分类Dev

如何在多个重叠的实例中播放声音文件?

来自分类Dev

如何在单击事件中一一播放声音文件

来自分类Dev

android-如何使按钮单击在每次按下时播放声音文件?

来自分类Dev

android-如何使按钮单击在每次按下时播放声音文件?

来自分类Dev

如何仅在第一个结束时播放声音文件?

来自分类Dev

在 jupyter notebook 中使用 python 循环播放声音

来自分类Dev

如何点击播放不同的声音文件?

来自分类Dev

如何在 Mac 终端中使用 sox 修剪子文件夹中的声音文件?

来自分类Dev

如何使用Prolog播放声音?

来自分类Dev

如何使用文本播放声音系统?

来自分类Dev

使用pygame播放声音(python)

来自分类Dev

Python:使用pygame播放声音

来自分类Dev

如何使用C播放任何类型的音频/声音文件?

来自分类Dev

如何播放声音?

来自分类Dev

播放声音文件而不循环

来自分类Dev

无法播放声音文件

来自分类Dev

如何在python 3中播放声音?

来自分类Dev

如何使用Tkinter在python上播放声音

来自分类Dev

出现“内容安全策略”错误时,如何在FireFox中使用GreaseMonkey脚本播放声音?

来自分类Dev

如何在Java中播放声音?

来自分类Dev

如何在angularjs中播放声音

来自分类Dev

如何在C ++中播放声音?

来自分类Dev

如何在Julia中播放声音

来自分类Dev

如何在android中播放声音

来自分类Dev

如何在C ++中播放声音