嘿,我只是在用JES为我的Python类做一些编码作业。我们的任务是拍摄一个声音,在背景中添加一些白噪声,并添加回声。还有更多的精确性,但我相信我对此很满意。我们正在制作四种不同的函数:主函数,基于用户定义的时间长度和回声量的回声方程,白噪声生成函数,以及合并噪声的函数。
这是我到目前为止所做的,还没有开始合并或主。
#put the following line at the top of your file. This will let
#you access the random module functions
import random
#White noise Generation functiton, requires a sound to match sound length
def whiteNoiseGenerator(baseSound) :
noise = makeEmptySound(getLength(baseSound))
index = 0
for index in range(0, getLength(baseSound)) :
sample = random.randint(-500, 500)
setSampleValueAt(noise, index, sample)
return noise
def multipleEchoesGenerator(sound, delay, number) :
endSound = getLength(sound)
newEndSound = endSound +(delay * number)
len = 1 + int(newEndSound/getSamplingRate(sound))
newSound = makeEmptySound(len)
echoAmplitude = 1.0
for echoCount in range (1, number) :
echoAmplitude = echoAmplitude * 0.60
for posns1 in range (0, endSound):
posns2 = posns1 + (delay * echoCount)
values1 = getSampleValueAt(sound, posns1) * echoAmplitude
values2 = getSampleValueAt(newSound, posns2)
setSampleValueAt (newSound, posns2, values1 + values2)
return newSound
每当我尝试加载它时,我都会收到这个错误。
错误为:
Inappropriate argument value (of correct type).
An error occurred attempting to pass an argument to a function.
Please check line 38 of C:Usersinsanity180DesktopWorkWinter SophomoreCS 140homework3homework_3.py
那行代码是:
setSampleValueAt (newSound, posns2, values1 + values2)
有人知道这里可能发生什么吗?任何帮助都将是伟大的,因为我希望给自己足够的时间来完成这项任务的编码。我以前也遇到过类似的错误,通常是语法错误,但我在这里没有看到任何这样的错误。
声音是在我运行这个程序之前发出的,我将延迟和数字分别定义为值1和3。
检查setSampleValueAt
的参数;样本值必须超出界限(应在-32768
-32767
内)。你需要为你的算法做一些输出箝位。
另一种可能性(根据进一步的输入,这确实是错误)是您的回波将超出样本的范围——也就是说,如果您的样本长5秒,而回波长0.5秒;或者CCD_ 4超过样本的长度;新声音的长度没有被正确地计算。