我在线程上播放声音设备时遇到了一些问题。我在开始时将音频设备作为sd导入。然后在运行期间,我想用ASIO声卡在线程上播放音调。我需要在线程上完成的所有配置都运行良好。然而,当我想玩的语气我得到了以下错误:线程上的Python Sounddevice.play()
sounddevice.PortAudioError:错误打开的OutputStream:未预料到的主机API 2错误0:u'Failed加载ASIO驱动”
如果我在线程中每次需要时初始化导入,它就可以工作。但我当然不想这样做。任何想法很难解决它?
谢谢!
这里一个简单的代码示例:
from threading import Thread
import numpy as np
import sounddevice as sd
class Test(Thread):
def __init__(self):
Thread.__init__(self)
#-- Configuration of the Tone to be played
self.fs = 44100 # sampling rate, in Hz, 44100 or 48000
duration = 1.05 # in seconds, may be float
f = 200.0 # sine frequency, Hz, may be float
self.tone_data = (np.sin(2*np.pi*np.arange(self.fs*duration)*f/self.fs)).astype(np.float32)
def run(self):
#-- Configuration of the ASIO sound card
#import sounddevice as sd
sd.default.channels = 2
sd.default.device = 14
print sd.query_devices(sd.default.device)['name']
#sd.default.latency = ('low','low')
#asio_out = sd.AsioSettings(channel_selectors=[1, 2])
#sd.default.extra_settings = asio_out
sd.default.samplerate = self.fs
sd.play(self.tone_data)
sd.wait()
w = Test()
w.start()
请提供[MCVE](http://stackoverflow.com/help/mcve)。 – Matthias
@Matthias我加了,示例代码 – Laura
出于好奇,你使用多线程的用例是什么? – Matthias