我创建了一个基于sounddevice playrec()的播放和记录函数
参见:python-sounddevice
它们使用如下方法inputparameters
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
的变量。
所以我认为它与通过。
如果这些变量不是空的,我怎么传递它们呢?
- 方法或模块
如果一个类似的问题已经存在,我搜索但不知道正确的关键字…
Thanks in advance
让我把我的评论作为一个答案(有保留,因为我不能测试你的代码):
-
确保你的数据实际上是一个波,而不仅仅是一个常量数组值。我怀疑你忘记把
t
包含在三角函数的参数中了 -
sd.playrc
调用的最后一个参数应该是**kwargs
,而不仅仅是kwargs
。
在注释之后,它看起来在我的脚本中使用的方法是没有错的…可能是python-sounddevice相关的问题。在python-sounddevice的github页面上,我看到可能有一个关于同一主题的相关问题…
参见sounddevice第38期
所以现在我不能再深入了,但至少我有一个答案…