我已经基于sounddevice playrec()
创建了一个播放和录制功能他们使用以下input参数方法
def playrec(data, samplerate=None, channels=None, dtype=None,
out=None, input_mapping=None, output_mapping=None, blocking=False,
**kwargs):
所以我想做同样的事情并将一些变量传递给默认函数 像:
import numpy as np
T = 10
fs = 44100
t = np.arange(10*fs)
x = np.sin(2*np.pi* 440*t) + 0.5*np.sin(2*np.pi* 880*t) + 0.25 * np.sin(2*np.pi* 1320*t)
rec1 = customplayrec(x.T, fs, input_channels=2, output_channels=2, repeats=3)
def customplayrec(data, samplerate=None, input_channels=None, output_channels=None,
repeats=None, l0=None, cascade=False, dtype=None, out=None,
input_mapping=None, output_mapping=None, blocking=False, **kwargs):
import sounddevice as sd
#... filter some variables
record = sd.playrec(data, samplerate, input_channels, dtype, out,
input_mapping, output_mapping, blocking, kwargs)
#... do something with data...
return(record)
结果是此功能中断(它不播放和录制任何声音)
我没有得到错误...所以我测试了我打破的地方,我发现了。在函数开始之前的一行一切正常。
Spyder也不会显示None
的变量
所以我认为它与传递输入值有关。
如果这些变量不是空的,我怎么能通过这些变量。
如果一个类似的问题都准备好了我搜索但不知道正确的关键词...
提前致谢
答案 0 :(得分:1)
让我将我的评论表达为答案(有预订,因为我无法测试您的代码):
确保您的数据实际上是一个wave而不仅仅是一个常量数组
值。我怀疑你忘记将t
包含在三角函数的参数中。
sd.playrc
来电的最后一个参数应为**kwargs
,而不只是kwargs
。
答案 1 :(得分:0)
在评论之后看起来我的脚本中使用的方法没有错...它可能是与python-sounddevice相关的问题。
在python-sounddevice的github页面上,我看到可能存在关于同一主题的相关问题...
见sounddevice issue 38
所以在这一刻我无法进一步,但至少我有一个答案......