在 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
我有一个语音文件,我正尝试使用以下代码向该语音样本添加频率为 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