体验某云语音听写(或语音转写、语音识别)API时的,音频文件中出现超过2-3s左右的间隔就停止识别了,漏听了一大段内容。又不想自己手动边听边裁剪,怎么办呢。
好了,用ffmpeg volumedetect滤镜看到了响度(db)的统计信息,最大值,最小值,怎么看到每一时间的响度呢
试试showwavespic,这个图没坐标轴,不好看,而且量纲也不知道,再试试scilab,octave/matlab
close all;clf
try;pkg load signal;catch;end;
db=@(x)log10(abs(x))*20; %根据分贝的定义
[y,fs]=audioread('23ll.wav','native');
maxdb=-1.5;
%//get from ffmpeg -i 23ll.wav -af volumedetect -f null dummy
y=db(y);y=y+maxdb-max(y);
plot([1:length(y)]/fs,y);xlabel('t (s)');ylabel('y (db)');
saveas(gcf,'23ll.jpg','jpg');
%sound(y,fs);
于是ffmpeg -i 23ll.wav -af silenceremove=stop_periods=-1:stop_duration=2.5:stop_threshold=-40dB 23lloutput1.wav
function y=db(x);
y=log10(abs(x))*20;
endfunction;
[y, fs, bits] = wavread('23lloutput1.wav');
maxdb=-1.5;
//get from ffmpeg -i 23ll.wav -af volumedetect -f null dummy
y=db(y);y=y+maxdb-max(y);
plot([1:length(y)]/fs,y);xlabel('t (s)');ylabel('y (db)');
于是再来一遍,stop_duration改成2,ffmpeg -i 23ll.wav -af silenceremove=stop_periods=-1:stop_duration=2:stop_threshold=-40dB 23lloutput2.wav
再用scilab看看响度/时间关系图
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。