在常用的英语语音识别数据库librispeech中,原始语音的格式是.flac,一般来说先要转换成.wav才能继续进行后处理。

转换工具可以使用sox (http://sox.sourceforge.net/):

sox $flac_path -t wav $wav_path

命令很简单,但是缺点是一次只能转换一条语音,所以需要利用脚本完成对librispeech中上万条语音进行自动转换。

一个简单思路是找出语料文件夹下所有以.flac结尾的音频,然后顺序处理。

flac_paths=$(find $DATASET_ROOT_PATH -iname '*.flac')
for flac_path in $flac_paths ; dodir_path=$(dirname $flac_path)file_name=$(basename $flac_path)base=${file_name%.*}ext=${file_name##*.}wav_path=$dir_path"/"$base".wav"if [ $ext = "flac" ]; thenecho "Converting from"$flac_path" to "$wav_pathsox $flac_path -t wav $wav_pathrm -f $flac_pathelseecho "Already converted: "$wav_pathfi

笔者亲测这种方式的时间开销很大(半天都没能跑完),所以需要考虑使用多进程,利用并行能力。

参考https://blog.csdn.net/zongza/article/details/89707462 这篇博文,对处理脚本做出如下修改:

#!/usr/bin/env bashecho ============================================================================
echo "                              Librispeech                                 "
echo ============================================================================DATASET_ROOT_PATH='E:/corpus_en/LibriSpeech_small'echo ============================================================================
echo "                        Convert from flac to wav                          "
echo ============================================================================Nproc=5    # 可同时运行的最大作业数
function PushQue {    # 将PID压入队列Que="$Que $1"Nrun=$(($Nrun+1))
}function GenQue {     # 更新队列OldQue=$QueQue=""; Nrun=0for PID in $OldQue; doif [[ -d /proc/$PID ]]; thenPushQue $PIDfidone
}function ChkQue {     # 检查队列OldQue=$Quefor PID in $OldQue; doif [[ ! -d /proc/$PID ]] ; thenGenQue; breakfidone
}function CMD (){        # 测试命令, 随机等待几秒钟dir_path=$(dirname $1)file_name=$(basename $1)base=${file_name%.*}ext=${file_name##*.}wav_path=$dir_path"/"$base".wav"if [ $ext = "flac" ]; thensox $flac_path -t wav $wav_pathecho "Converting from"$flac_path" to "$wav_pathrm -f $flac_pathelseecho "Already converted: "$wav_pathfi
}flac_paths=$(find $DATASET_ROOT_PATH -iname '*.flac')
for flac_path in $flac_paths ; doCMD $flac_path &PID=$!PushQue $PIDwhile [[ $Nrun -ge $Nproc ]]; doChkQuedone
done
wait
echo "Done~"

时间几乎节省4倍。

[语音处理] .flac文件转.wav文件相关推荐

  1. Java pcm文件与wav文件互转

    Java pcm文件与wav文件互转 2018年05月15日 14:32:28 -过期罐头 阅读数:1432 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn. ...

  2. APE,FLAC文件转WAV文件

    近日需要实现APE(Monkey's Audio)转换WAV文件,都是目前比较流行音乐格式.如果对APE感兴趣可以下载Monkey's Audio 4.11 SDK (with source code ...

  3. ffmpeg学习 pcm文件转wav文件

    前面有详细介绍PCM文件数据格式,本文简单说明PCM文件如何转换成WAV文件,并通过代码实现转换过程. WAV文件格式 WAV是微软公司专门为Windows开发的一种标准数字音频文件,符合资源互换文件 ...

  4. 数据压缩(三)——AVI文件分析WAV文件分析

    一.AVI文件分析 (一).AVI文件音频和视频的数据是如何放置的?交织放置or连续放置? 打开一个AVI格式文件,如下图: 在00000630行文件出现第一个"01wb"代表第一 ...

  5. PCM文件转WAV文件

    PCM文件转成WAV文件,只要加一个表头就够了. 这里假设采样率22050,采样精度16比特,双通道.Intel数端方式存放数据. 因为PCM源文件是四字节对齐,所以以四字节为单位Copy数据. 下面 ...

  6. 微信JS-SDK录音的speex音频文件转换为wav

    网上找了很久,大部分都是用C++写的speex转换为wav,对于一个不懂C++得Java程序员来说,简直是一场噩梦,经过搜索,终于找到了可以直接用的现成的例子.这里记录一下,防止以后忘记.我的思路是找 ...

  7. 如何将.m4a转.wav文件

    昨天现场交付的同事找到我,想把一个.m4a格式的文件转为.wav文件,目的是可以使得现场的媒体服务器将语音播放出来. 我习惯性的打开了adobe audition文件打开语音进行转换,但是该软件提示找 ...

  8. 【数据压缩】WAV文件和AVI文件格式分析

    一.WAV文件和AVI文件格式简介 WAV的英文全称是Waveform Audio File Format ,它采用 RIFF (Resource Interchange File Format)文件 ...

  9. 音频文件(.wav)解析读取

    wav是一种无损的音频文件格式,所有的WAV都有一个文件头,包含了音频流的编码参数,即支持非压缩的PCM编码方式,也支持常见的压缩编码格式. 当WAV文件采用PCM编码方式时,PCM文件和WAV文件的 ...

最新文章

  1. Linux08-日志
  2. vr rgb yuv学习资料整理
  3. Java基础--static静态原理及API使用示例详解
  4. ZooKeeper启动报错 JAVA_HOME is incorrectly set
  5. 1901005每日一句
  6. cad两直线相交画圆弧_在CAD图纸中绘制中心线的操作技巧
  7. php爬虫亚马逊,亚马逊爬虫(亚马逊 api)
  8. EMD EEMD CEEMD CEEMDAN IEEMDAN 附赠EEMD代码
  9. R语言中,如何设置当前工作文件路径?
  10. Ruby中yield和block的用法
  11. android 浏览器弹窗提示,安卓手机浏览器打开网页弹出安全警告的原因及解决方法...
  12. mysql secure file_mysql secure-file-priv选项问题的解决方法
  13. 英语学习方法:我是怎么从高考英语115考到托福97的
  14. 2021-05-26SEO关键词KPI考核指标有哪些
  15. 测试人员应看重「业务测试能力」
  16. 带宽、吞吐量与线速的关系(转载)
  17. mysql 联合主键 加锁_MySQL 加锁处理分析
  18. javaweb+移动端 富文本
  19. UE4-SubSystem
  20. linux12企业实战 -- 37zabbix企业微信通知配置

热门文章

  1. 傲慢的上校的fragment讲解
  2. mysql投影和选择区别_关系运算里面,“选择”和“投影”区分?
  3. 在web-actix框架上实现上传文件
  4. LeetCode 2309. 兼具大小写的最好英文字母
  5. 抖音seo企业号开发在线客服关键系统上线.技术源代码mvc架构搭建
  6. 正则表达式里面 .* 和 .*?,\s与\S(大写)的区别
  7. Java default关键字与protect的区别之处
  8. 3d虚拟VR实训教学软件制作
  9. 网络设备的升级与备份
  10. 生成与获取token