【发布时间】:2021-09-20 12:30:18
【问题描述】:
我有 4 秒 audio sample 有人说“你好”,我设法加载了 wav 文件并在时间幅度谱中显示它,我的下一步是计算这个声音的 AM(幅度调制) ,我设法在我创建的正弦波上做到这一点,但在实际声音上做到这一点显然是不同的。
我得到了意想不到的结果,我期待一个 cos 形状,幅度会根据声音而变化,但我得到的声音大致相同!
这是我的完整代码:
def generateSignalAM(t,data):
TWO_PI = 2 * np.pi
fc = 100
ac = 0.5
carrier_wave = np.cos(t * fc * TWO_PI)
am = carrier_wave * (1 + data/ac)
plt.plot(t,am)
plt.plot(time,data)
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
plt.legend(['AM Signal', 'Original Signal'])
plt.show()
return am
samplerate, data = scipy.io.wavfile.read("hello.wav")
duration = len(data)/samplerate
time = np.arange(0,duration,1/samplerate) #time vector
generateSignalAM(time,data)
这是输出:
在@The Photon 之后,我将代码更改为:
def generateSignalAM(t,data):
#sample rate is 44100 Hz
TWO_PI = 2 * np.pi
fc = 10000
ac = 0.00005
carrier_wave = np.cos(t * fc * TWO_PI)
am = carrier_wave * (1 + data/ac)
plt.plot(t,am)
#plt.plot(time,data)
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
#plt.legend(['AM Signal', 'Original Signal'])
plt.show()
return am
得到以下结果:
【问题讨论】:
-
据我了解,AM 需要将信号编码为位(0 和 1)......如果您所说的 AM 在无线电环境中是 AM/FM。在将信号转换为比特后,您可以使用幅度调制将这些比特传输到另一个站点,例如。位 1 的幅度为 100,位 0 的幅度为 50。
-
您将数据与与信号本身处于相同频率范围的 100 Hz 信号相乘,我不确定您期望得到什么结果。
-
提示:您系统中的调制深度是多少? (这不是真正的编程问题,而是关于调制如何工作的问题。您可能会在 dsp 或电子堆栈交换中得到更好的答案)
标签: python signal-processing amplitude modulation