【发布时间】:2018-11-12 19:53:15
【问题描述】:
我的项目的目标是合成声音。我想要做的是读取一个波形文件并将其转换为幅度谱。因为我对幅度和相应的频率感兴趣。我还需要更改某些频率的幅度(我得到的),以便我可以生成不同的声音 wav 文件并播放它。然而,即使不改变幅度,重建的信号也充满了噪声。
简单来说就是读取文件---FFT---改变大小---播放。
下面是代码
import scipy.io.wavfile
import sounfile as sf
data , rate = sf.read("bird_chirp.wav")
FFt_data =np.fft.rfft(data)
magnitude = np.abs(FFt_data)
phase = np.angle(FFt_data)
N= len(data) # Define the length of the wav file
timestamp = np.linspace(0.0, N*T, N)
T= 1.0/rate
n = data.size
#get the corresponding Frequencies
freq = np.fft.rfftfreq(n, d=1./rate)
# save it as a Dataframe
df = {"freq":freq, "mag":magnitude}
df =pd.DataFrame(df)
#Normalize the magnitude
a=df["mag"]
norm_a = a/a.max(axis=0)
df["mag"] = norm_a
# here I would play around with magnitude , make it high or low
#code to change magnitude
#Get back the new data to write in wav
y=0
for magnitudes ,frequencies in df.iterrows():
y+= magnitudes["mag"]*(np.sin(frequencies["freq"] *2.0*np.pi*timestamp))
#save it
sf.write(file="test.wav", data=y,samplerate=rate)
代码播放充满噪音的声音。
【问题讨论】:
-
如果您希望人们能够提供帮助,我建议您使您的代码更清晰一些 - 例如,使用名称不言自明的变量。此外,您要问什么也不是很清楚-也许扩展您正在尝试做的事情,不起作用的事情以及到目前为止您尝试过的事情?我建议您查看本网站上的指南,了解如何提出人们想要帮助回答的问题。
-
@RandomDavis 我希望我现在已经给出了更清楚的解释?
-
当然。您可能只是想进一步澄清您的问题 - 您是在问为什么输出中有噪音,以及如何摆脱它?如果是这样,您应该在帖子的标题和正文中提出该问题,而不是隐含的问题。
-
不!幅度没有修改。
标签: python signal-processing fft wav frequency-analysis