2016-11-06 128 views
1

我有一個語音文件,我試圖到300赫茲增加頻率的正弦這個語音樣本,用下面的代碼:正弦波添加到語音文件在MATLAB

% 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'(應該包含原始語音和正弦曲線)的功率譜完全相同!

Image 1: Power spectrum of original speech file from 0 to 500 hz
圖1:原始語音文件的功率譜從0至500赫茲

Image 2: power spectrum of new speech signal from 0 to 500 hz
圖2:新的語音信號的功率譜從0至500赫茲

請讓我知道我出錯的地方。

+1

冷後你兩個圖像? newspeach上應該有一個300Hz的欄。也許你需要增加正弦波的功率 – xvan

+0

我打算這麼做,對不起!它被編輯。 – clewis

+0

他們*完全相同嗎?繪製差異以查看......您顯示的語音頻譜中有很多功能,並且您只添加幅度爲1的正弦波。嘗試將正弦乘以某個較大的常數。 – tmpearce

回答

2

你有一個比例問題,這是單純的正弦曲線的功率:

pwelch of sinusoid

和音頻信號的峯值功率〜1E8