如果通过FFT来提高语音质量?

发布于 2022-09-11 23:08:47 字数 1033 浏览 18 评论 0

思路:
通过使用快速傅立叶变换来增加语音谐波的幅度,从而提高语音质量:将时域信号转换为频域,然后处理频谱,然后将其转换回时域。

目的:
增加振幅,改善语音质量,确保音频没有削波或失真。将产生的时域信号另存为WAV(16位)并将其包括在提交中。指定增加谐波幅度的量以及声音的变化方式。

下面是获取时域图和频域图的代码,请问如何进行快速傅里叶变换,并且改善音频质量?(如果提高振幅)

# -*- coding: utf-8 -*-

import scipy.io.wavfile as wf
import numpy as np
import matplotlib.pyplot as plt

fs, audio = wf.read("/Users/matzoh/Downloads/homework/44khz16bit.wav")
# fs 采样率
# audio 数据

# creating time axis
plt.subplot(2, 1, 1)
time = np.linspace(0, len(audio)/fs, len(audio))
plt.plot(time, audio)

# Adding labels
plt.title('Sound recording')
plt.xlabel('Frequency (Hz)')
plt.ylabel('amplitude')

# plt.plot(time, audio)
# ##freqaxis = np.linspace(0, fs, len(audio))
# creating frequency domain
plt.subplot(2, 1, 2)
fft = np.abs(np.fft.fft(audio))
# plt.plot(freqaxis, fft)
fft2 = fft[0:int(len(fft)/2)]
freqaxis2 = np.linspace(0, fs, len(audio)/2)
fft3 = np.fft.fft(audio)
fft3 = np.abs(fft2)/len(fft2)

fft3 = 20*np.log10(fft2)

plt.plot(fft2)
plt.loglog(fft2)

plt.show()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文