在 MATLAB 中向语音文件添加正弦曲线

Add a sinusoid to a speech file in MATLAB

我有一个语音文件,我正尝试使用以下代码向该语音样本添加频率为 300 Hz 的正弦波:

% Add sine wave to speech signal
clear all; close all;
load spf2.mat;
% sound(speech)
pxx= pwelch(speech);
plot(pxx);
xlim([0 500]);
F0 = 300; %hz
Fs = 8000;                   % samples per second
dt = 1/Fs;                   % seconds per sample
StopTime = 2.74775;          % seconds
t = (0:dt:StopTime-dt)';     % seconds
y = sin(2*pi*F0*t);
newspeech = speech + y;
sound(newspeech)
pxx= pwelch(newspeech);
figure
plot(pxx);
xlim([0 500]);

但是,这似乎没有正确添加到我的信号中。

原信号的功率谱和'newspeech'的功率谱(应该包含原语音和正弦波)一模一样!


图 1:原始语音文件的功率谱从 0 到 500 Hz


图 2:从 0 到 500 Hz 的新语音信号的功率谱

请让我知道哪里出错了。

你有一个缩放问题,这就是正弦波的力量:

你的音频信号的峰值功率是~1E8