如何使用音频文件中的任意波形创建扫频/啁啾信号。我可以使用matlab / octave创建一个扫频/啁啾信号,代码如下(也参见频谱)。
下面的代码用于创建一个逐渐降低频率的扫频音频信号,但我希望得到音频文件num_01.wav
(链接如下)以逐渐降低频率,但我得到一个乱码音频文件。
clc,clear all
swept_startfreq = 500;
swept_endfreq = 225;
fs = 8000;
swept_dursec = 15; % duration of signal in seconds
swept_t = (0:swept_dursec*fs)/fs; % Time vector
if (swept_startfreq == swept_endfreq)
swept_phase = swept_startfreq * swept_t;
else
swept_alpha = abs(log(swept_endfreq/swept_startfreq))/swept_dursec;
swept_b = (swept_startfreq - swept_endfreq)/(1 - exp(-swept_alpha*swept_dursec));
swept_a = swept_startfreq - swept_b;
swept_phase = swept_a*swept_t - (swept_b/swept_alpha)*exp(-swept_alpha*swept_t);
endif
swept_sig_out = .8* cos(2*pi*swept_phase); %equation used to create signal
wavwrite([swept_sig_out'] ,fs,32,strcat('/tmp/swept_sig_out.wav')); % export file
Heres是上面原始代码创建的文件的保管箱链接(扫频/ chrip音频信号)。 https://www.dropbox.com/s/wg8sxmsdd7hdojz/swept_sig_out.wav?dl=0#
When I replace/add the lines:
[imported_sig, fs_rate, nbitsraw] = wavread('num_01.wav');
swept_sig_out=imported_sig(:).*swept_phase(1:length(imported_sig))(:);
创建的信号是此(文件的保管箱链接)https://www.dropbox.com/s/ekrcssrgie3vfgb/swept_sig_out_created_from_audio_file.wav?dl=0#
Note: the audio test num_01.wav file I used can be found on a dropbox account
https://www.dropbox.com/s/p37kaszqylqnkme/num_01.wav?dl=0#
我希望音频文件num_01.wav
逐渐减小频率/音高,但我得到一个乱码的音频文件,我该如何解决此问题,以便音频文件的频率逐渐降低?
PS:我使用的是Octave 4.0,就像Matlab一样