文章目录

  • 参考
  • sox使用
    • sox 安装
    • 查看信息 (soxi)
    • 播放音频 (play)
    • 音频操作 (sox)
      • 提取通道 (remix)
      • 改变音量 (-v)
      • 改变采样率 (-r)
      • pcm 转 wav (-t -c -e -b -r)
      • 加混响 (reverb)
    • 录制音频 (rec)
    • sox其它功能
  • faad使用
    • faad安装
    • faad:aac转wav
  • ffmpeg 使用
    • ffmpeg安装
    • mp4 转 avi:
    • wav 转 pcm
  • 实际使用示例
    • 1. input: .pcm,output: .wav(三个channels)
    • 2. input: .aac,output: .wav(右通道)
    • 3. 连续循环录制音频,并将录制音频送入我们想要的处理程序
    • 4. 将所有wav文件音量增到最大(最大音量的0.707且不截波)
    • 5. Matlab中随机挑选wav文件,并使其音量增到最大,最后进行合并。
  • WAV头格式

参考

sox常见操作:https://www.cnblogs.com/zhuminghui/p/11971311.html

sox API:http://manpages.ubuntu.com/manpages/bionic/man1/sox.1.html

sox说明:http://sox.sourceforge.net/sox.html

wav头格式说明(.pdf):链接: https://pan.baidu.com/s/10J2kb0hJmgQMFv7fxqUrEA,提取码: 6sp3

sox使用

sox 安装

sudo apt-get install sox # ubuntu
sudo apt-get install sox # Linux
brew install sox  # Mac 系统

查看信息 (soxi)

soxi a.wav# or
sox a.wav -n stat

播放音频 (play)

play a.mp3

音频操作 (sox)

提取通道 (remix)

# 对a.mp3提取左右通道,保存文件为a
sox a.mp3 a_left.wav remix 1
sox a.mp3 a_right.wav remix 2# 如一个文件有第三通道
sox a.mp3 a_thirdchannel.wav remix 3

改变音量 (-v)

sox -v 5 a.wav a_v5.wav

当不确定方法多少倍,即放大到最大倍数却不截波时:

# 以 sox foo.wav -n stat -v 命令返回的数字作为放大倍数,将最大化 foo.wav 的音量而不至于出现削波
sox foo.wav -n stat -v 2> vc
sox -v `cat vc` foo.wav foo-maxed.wav

改变采样率 (-r)

# 48000 变为 16000
sox a.wav -r 16000 a_16k.wav

pcm 转 wav (-t -c -e -b -r)

给pcm添加wav头,即将pcm转为wav,即将以二进制存储的文件按照一定格式解析,如通道数、比特率、采样率等

sox -t raw -c 3 -e signed-integer -b 16 -r 16000 a.pcm a.wav

注:pcm的编码格式可选择不同格式,根据官方说明16-bit encoding size的应该是signed-integer,具体可参考官方说明:http://manpages.ubuntu.com/manpages/bionic/man1/sox.1.html

加混响 (reverb)

sox a.wav a_reverb.wav reverb# or 指定混响参数
sox song.wav song_reverb.wav reverb 50 50 90 50 30

混响参数依次为:
1)reverbrance,即余响的大小,如设置为50;
2)HF-damping,即高频阻尼,如设置为50;
3)room-scale,即房间大小,如设置为90,代表一个比较大的房间;
4)立体声深度,设置越大则代表立体声效果越明显,如设置为50;
5)pre-delay,即早反射声的时间,单位是毫秒,如设置为30毫秒。

执行完以上命令,读者听一下处理完的声音,会发现有一个比较明显的混响效果了。

ref:http://www.music-video.cn/2017/12/19/%E7%AC%AC8%E7%AB%A0-%E9%9F%B3%E9%A2%91%E6%95%88%E6%9E%9C%E5%99%A8%E7%9A%84%E4%BB%8B%E7%BB%8D%E4%B8%8E%E5%AE%9E%E8%B7%B5%E6%A0%B7%E7%AB%A0/

录制音频 (rec)

rec newfile.wav # 录制

默认为以录音设备的参数进行录制,如可能是44100的采样率,通道数为2,可设置为我们想要的录制参数进行录制:

e.g., 通道数:1,采样率16000,时长:5分钟

rec -c 1 -r 16000 -b 16 -e signed-integer recording.wav trim 0 5:00

sox其它功能

mp3转换为wav

faad使用

faad安装

sudo apt-get install faad # ubuntu

faad:aac转wav

可将.aac文件转为 .wav文件(sox无法解析aac文件):

faad -o output.wav input.aac

ffmpeg 使用

ffmpeg主要处理视频(.avi, .mp4)

ref:http://ffmpeg.org/ffmpeg.html
https://blog.csdn.net/wenmingzheng/article/details/88373192

ffmpeg安装

sudo apt-get install ffmpeg

mp4 转 avi:

ffmpeg -i input.mp4 output.avi

wav 转 pcm

ref: https://blog.csdn.net/tang_chuanlin/article/details/94014439

ffmpeg -i input.wav -f s16be -ar 16000 -ac 1 -acodec pcm_s16be output.pcm

实际使用示例

1. input: .pcm,output: .wav(三个channels)

步骤:1)pcm-> wav, 2) remix 提取通道。 ps:使用了find和exec命令。

path=/tmp/record/
find $path -name *.pcm -exec sox -t raw -c 3 -e signed-integer -b 16 -r 16000 {} {}.wav \;find $path -name *.pcm.wav -exec sox {} {}_TALK.wav remix 1 \;
find $path -name *.pcm.wav -exec sox {} {}_FF.wav remix 2 \;
find $path -name *.pcm.wav -exec sox {} {}_BF.wav remix 3 \;find $path -name *.pcm.wav_*.wav > filelist.txt

2. input: .aac,output: .wav(右通道)

步骤:1)faad:aac-> wav, 2) sox:修改采样率到16k,3)sox remix :提取通道。

path=/tmp/20200819
# 预处理:删除文件名中空格
find $path -name '* *' -exec rename 's/ //g' {} \;#faad: aac -> wav
find $path -name "*.aac" -exec faad {} -o {}.wav \;# sox: change sample rate and derive 2rd channel
find $path -name "*.aac.wav" -exec sox {} -r 16k {}_16k.wav \;
find $path -name "*.aac.wav_16k.wav" -exec sox {} {}_right.wav remix 2 \;# create filelist.txt
find $path -name "*.aac.wav_16k.wav_right.wav" > filelist_2.txt# copy files to other folder
find $path -name "*.aac.wav_16k.wav_right.wav" -exec cp {} ./testdata/2{} \;

3. 连续循环录制音频,并将录制音频送入我们想要的处理程序

fileid=1
fileid_interval=1
while true
dofilename=recording_$fileid.wavrec -c 1 -r 16000 -b 16 -e signed-integer $filename trim 0 5:00sudo xxx.bin $filenamefileid=$(expr $fileid + $fileid_interval)
done

然后再sh xx.sh即可运行(xx.sh即该shell文件名)。xxx.bin即为我们想要送入的程序(需带文件路径)。文件名以累增1的方式生成。

ref:
加减乘除的运算法则可参考https://blog.csdn.net/CosmopolitanMe/article/details/87607489
linux下编写shell的while语句可参考https://www.cnblogs.com/ghostwu/p/9114660.html

4. 将所有wav文件音量增到最大(最大音量的0.707且不截波)

shell下的条件判断、字符串拼接、判断文件是否存在等参考:
https://blog.csdn.net/u010637291/article/details/106420453

path=/tmp/model/work/recordings
filelist=filelist.txtfileid=1
fileid_interval=1
fileid_max=700
while [ $fileid -lt $fileid_max ] #true
dofilename=${path}/recording_$fileid.wavfilename_maxed=${filename}_our_maxed.wavif [ -f $filename ];thenecho $filename_maxed >> $filelistelseecho "文件不存在:"${filename}fileid=$(expr $fileid + $fileid_interval)continuefisox $filename -n stat -v 2> vcvol_max=$(cat vc)vol_our=$(echo "$vol_max*0.707"|bc)sox -v $vol_our $filename $filename_maxedsudo ./test_c_main_20200903.bin $filename_maxedfileid=$(expr $fileid + $fileid_interval)
done

5. Matlab中随机挑选wav文件,并使其音量增到最大,最后进行合并。


file_dir = '/tmp/wav_snr';
snr_dir = {'snr22', 'snr17', '/snr12', 'snr7', 'snr2'};
file_num = 200;for snr_id = 1:length(snr_dir)y_concat = [];file_snr_dir = [file_dir, '/', snr_dir{snr_id}, '/xatx'];filelist_wav = dir(fullfile(file_snr_dir,'*/*.wav'));random_files_ids = randperm(size(filelist_wav, 1), file_num);for rn_fl_id = 1:file_numfile_wav = filelist_wav(random_files_ids(rn_fl_id));file_wav_name = [file_wav.folder, '/', file_wav.name];  file_wav_name_max = [file_wav_name, '_max.wav'];%% matlab run sox !!!system_command = ['sox ', file_wav_name, ' -n stat -v 2> vc'];system(system_command);system_command = ['sox -v `cat vc` ', file_wav_name, ' ', file_wav_name_max];system(system_command);%%%%%%%%[y, fs] = audioread(file_wav_name_max);y_concat = vertcat(y_concat, y); system_command = ['rm -rf ', file_wav_name_max];system(system_command);endaudiowrite([file_dir, '/', snr_dir{snr_id}, '_xatx_concat200.wav'], y_concat, fs);disp('concat successfully');
end

WAV头格式

文档:链接: https://pan.baidu.com/s/10J2kb0hJmgQMFv7fxqUrEA,提取码: 6sp3

了解wav格式的文件的编码格式,很重要。wav相对于pcm文件,相当于多了一个wav头。

【音频处理】之Ubuntu sox / faad / ffmpeg 使用相关推荐

  1. ubuntu下用ffmpeg录制音频文件

    ubuntu下用ffmpeg命令可以录制视频文件和音频文件,其中录制音频文件很简单,其基本格式为: ffmpeg -f alsa <input_options> -i <input_ ...

  2. 在Ubuntu虚拟机使用ffmpeg采集摄像头的yuv视频数据

    在Ubuntu虚拟机使用ffmpeg采集摄像头的yuv数据 使用命令从视频提取出yuv数据 提取yuv视频数据 单独提取视频的y分量或u.v分量 通过摄像头获取yuv数据 使用命令从视频提取出yuv数 ...

  3. 【转载】【重要】Ubuntu Linux 下 Ffmpeg 及 Mencoder 安装使用小结

    近段时间在学习 Ffmpeg.Mencoder 音视频转换,大概在 Ubuntu 10.04.Ubuntu 10.10.Ubuntu Natty 测试版上安装和使用过.重点是针对低分辨率的普通手机视频 ...

  4. Ubuntu下使用ffmpeg分割和合并视频文件

    1.ffmpeg的安装 sudo apt install ffmpeg 2.裁剪视频文件 ffmpeg -ss 00:00:00 -i input_file.mp4 -vcodec copy -aco ...

  5. Ubuntu 下编译ffmpeg和x264解编码器(翻译的一篇文章:)

    拿出自己一篇早期接触Ubuntu时翻译的文章,对逝去的SEO-DIC.COM.CN这个网站默哀. Ubuntu 下编译ffmpeg和x264解编码器 今年初由于个人的一些原因和其它因素:希奥开源(ht ...

  6. Ubuntu下编译ffmpeg+openh264+x264

    [笔记] Ubuntu下编译ffmpeg+openh264+x264 原文:https://www.cnblogs.com/journeyonmyway/p/4648820.html - ffmpeg ...

  7. ubuntu 交叉编译 armv7_32 ffmpeg x264(已完成)

    文章目录 1.交叉编译x264(x264要先编译,因为到时编译ffmpeg时要用到x264的头文件和库) 2.接着我们编译ffmpeg FFmpeg和X264的交叉编译环境 arm linux交叉编译 ...

  8. linux编译ffmepg,在Ubuntu下编译FFmpeg

    在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...

  9. ubuntu安装使用ffmpeg

    2019独角兽企业重金招聘Python工程师标准>>> 环境:ubuntu 12.04 LTS (1)到http://www.ffmpeg.org/download.html下载最新 ...

最新文章

  1. python 继承和多态
  2. WPF绘制自定义窗口
  3. mvc mvp mvvm
  4. 1.5 为什么正则化有利于预防过拟合-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  5. Python中sort与sorted函数
  6. JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏
  7. pyemd资料学习 2019.1.24 https://media.readthedocs.org/pdf/pyemd/latest/pyemd.pdf
  8. html如何显示上传进度条,HTML5 Ajax文件上传进度条如何显示
  9. Java的几何布朗运动
  10. 2019最全BAT资深Java面试题答案合集,建议收藏~
  11. checked exception和unchecked exception区别
  12. 决策树的选择,哪个放在第一个需要决策的环节
  13. 唏嘘!知名音乐站再传倒闭:官网、App挂掉,“留下了时代的眼泪...”
  14. python try else多余的设计_在python中利用try..except来代替if..else的用法
  15. 【转】navicat远程连接mysql,2003 can't connect to mysql server on 10038
  16. 【开发】开源的网络攻防黑客游戏d0x3d
  17. 2020年面试后端必会算法记录
  18. 红色作为交通信号灯颜色是因为它对脑电波有影响吗?
  19. 辗转相除法c++_欧冠尤文被黑马,C罗太可惜了,他错失了一次千载难逢的机会...
  20. 【Handshake】引发全硅谷投资机构额度大战的传奇项目

热门文章

  1. ubuntu下载神器---xdm
  2. coderwhy--前端知识整合包--htmlcss05
  3. 友价源码开发系统如何对接验证码功能?
  4. java 庖丁解牛中文分词_庖丁解牛中文分词包
  5. html中右侧三角形代码,纯CSS绘制三角形(各种角度)
  6. 网上发现的一个 《Flashflex大全》
  7. GPU显存占满利用率GPU-util为0
  8. mybatis批量新增和批量更新的效率对比
  9. Exynos4412-itop4412 uboot移植
  10. 数据结构----二叉树已知先序和中序遍历序列求后序遍历