在 Python 中计算频率调制

问题描述

我正在尝试为给定的音频文件(12 秒)计算频率调制(无线电上下文),我设法使用以下公式在正弦波上进行计算:

fm = np.sin(TWO_PI * (fc + b * data) * t)

其中 fc 是载波频率,b 是调制指数,data 是音频文件,t 是时间向量。

但我似乎无法让它处理音频文件

这是我目前所拥有的:

enter image description here

如您所见,您无法真正理解频率何时发生变化,我可以放大,但这并不可靠且令人困惑,我很乐意听到其他方式。

这是我的完整代码

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

def generateSignalFM(t,data):
    TWO_PI = 2 * np.pi
    fc = 10000
    b = 5

    fm = np.sin(TWO_PI * (fc + b * np.array(data)) * t) # calculaying frequency modulation

    fig,axs = plt.subplots(nrows=2,ncols=1)
    fig.tight_layout()

    axs[1].plot(t,fm)
    axs[1].set_xlabel("Time(s)")
    axs[1].set_ylabel("Amplitude")
    axs[1].set_title("Modulated Signal (FM)")

    axs[0].plot(t,data)
    axs[0].set_xlabel("Time(s)")
    axs[0].set_ylabel("Amplitude")
    axs[0].set_title("Original Signal")
    plt.show()

samplerate,data = scipy.io.wavfile.read("musicSample.wav")
sample_for = 12
start_time = 30*samplerate # start from 30 seconds
end_time = start_time + (samplerate * sample_for) # sample for 1 second
split_data= data[start_time:end_time]
time = np.arange(0,sample_for,1/samplerate) #sample 1 second

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)