声音回声功能Python
Sound echo function Python
我需要编写 echo 函数,它接受一个文件名和一个浮点值 time_delay,表示 seconds.Then 的数量,echo 应该处理声音,用原始声音被自身的副本覆盖,时间向前移动 time_delay。
这是我目前拥有的:
def add_scale_2(L, M, L_scale, M_scale):
""" add_scale_2 has as intput list L and list M and rertuns a new list LC,
with a linear sum of the two lists times their scale respectively. LC will use the length of the
shortest list
"""
if len(L) >= len (M):
N = len(M)
else:
N = len(L)
LC = [L[i]*L_scale + M[i]*M_scale for i in range(N)]
return LC
并且:
def echo(filename, time_delay):
print "Playing filename1 ..."
play(filename)
print "Reading in the sound data..."
samps1, sr = readwav(filename)
samps2 = [0]*float(samps1*time_delay) + samps1
print "Computing new sound..."
newsamps = add_scale_2(samps1, samps2, 0.5, 0.5)
newsr = sr # no change to the sr
writewav( newsamps, newsr, "out.wav" )
print "Playing new sound..."
play( 'out.wav' )
谁能帮帮我,因为我想不通!
samps2 = [0]*int(samps1*time_delay) + samps1
TypeError: can't multiply sequence by non-int of type 'float'
您的线路:
[0]*float(samps1*time_delay) + samps1
尝试将序列 [0]
乘以 float
。导致错误 TypeError: can't multiply sequence by non-int of type 'float'
您可以改为转换为 int:
[0]*int(len(samps1)*time_delay) + samps1
我需要编写 echo 函数,它接受一个文件名和一个浮点值 time_delay,表示 seconds.Then 的数量,echo 应该处理声音,用原始声音被自身的副本覆盖,时间向前移动 time_delay。
这是我目前拥有的:
def add_scale_2(L, M, L_scale, M_scale):
""" add_scale_2 has as intput list L and list M and rertuns a new list LC,
with a linear sum of the two lists times their scale respectively. LC will use the length of the
shortest list
"""
if len(L) >= len (M):
N = len(M)
else:
N = len(L)
LC = [L[i]*L_scale + M[i]*M_scale for i in range(N)]
return LC
并且:
def echo(filename, time_delay):
print "Playing filename1 ..."
play(filename)
print "Reading in the sound data..."
samps1, sr = readwav(filename)
samps2 = [0]*float(samps1*time_delay) + samps1
print "Computing new sound..."
newsamps = add_scale_2(samps1, samps2, 0.5, 0.5)
newsr = sr # no change to the sr
writewav( newsamps, newsr, "out.wav" )
print "Playing new sound..."
play( 'out.wav' )
谁能帮帮我,因为我想不通!
samps2 = [0]*int(samps1*time_delay) + samps1
TypeError: can't multiply sequence by non-int of type 'float'
您的线路:
[0]*float(samps1*time_delay) + samps1
尝试将序列 [0]
乘以 float
。导致错误 TypeError: can't multiply sequence by non-int of type 'float'
您可以改为转换为 int:
[0]*int(len(samps1)*time_delay) + samps1