将音频格式从flac转到wav的两种方法
最近在智能语音中用到了数据集cn-celeb。这个数据集的音频格式是flac,而在做数据增强(augmentation)以及模型训练时用的数据格式是wav,因此需要把音频格式从flac转到wav。我在ubuntu下摸索了一番,找到了两种方法。
1,基于Linux下的sox命令写shell脚本实现
SoX(即 Sound eXchange)是一个跨平台(Windows,Linux,MacOS 等)的命令行实用程序,可以将各种格式的音频文件转换为需要的其他格式。在Ubuntu下安装sox命令如下:sudo apt install sox。Sox装好后就开始写shell脚本,基于sox做音频格式转换的shell脚本如下:
#!/bin/bash echo "$0 $@ $#" srcdir=$1
outdir=$2 echo "insrc: $srcdir, outdir: $outdir"
echo "doing, pls waiting" for x in $srcdir/*.flac; do
name=`basename $x`
dirx=`dirname $x`
array=(${name//./ })
filename=${array[0]}
newfile=$filename".wav"
echo $newfile
sox $x -t wav $outdir/$newfile
done echo "done,pls check!!"
2,基于pydub的python库写python代码实现
Pydub是一个依赖于ffmpeg的python音频处理库,因此要先安装ffmpeg,安装命令如下:sudo apt install ffmpeg # version 7:4.2.7-0ubuntu0.1。安装后用命令ffmpeg –version查看是否安装好,如下图:

ffmpeg安装好后再在一个conda环境下安装pydub库,命令如下:pip install pydub。可以用pip list看一下是否装好以及版本,如下图:

这些都ready后就开始写python代码,基于pydub做音频格式转换的python代码如下:
from glob import glob
from pydub import AudioSegment
import os
def find_files(directory, ext='flac'):
return sorted(glob(directory + f'/**/*.{ext}', recursive=True))
def trans_flac_to_wav(file_path):
file_dir = os.path.dirname(file_path)
new_name = os.path.basename(file_path).replace('.flac', '.wav')
new_file = os.path.join(file_dir, new_name)
song = AudioSegment.from_file(file_path)
song.export(new_file, format="wav")
print('===== Begin to Do converter =====')
audio_files = find_files('/home/....../format_converter/flac')
for audio_file in audio_files:
# do converter
trans_flac_to_wav(audio_file)
以上就是将音频格式从flac转到wav的两种方法。对其他音频格式之间的互转,方法也是适用的,只不过代码上有可能需要做一点小的改动。
将音频格式从flac转到wav的两种方法的更多相关文章
- 在PHP代码中处理JSON 格式的字符串的两种方法:
总结: 在PHP代码中处理JSON 格式的字符串的两种方法: 方法一: $json= '[{"id":"1","name":"\u ...
- elf格式转换为hex格式文件的两种方法
这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...
- get请求传递json格式数据的两种方法
get请求参数为json格式数据,使用pyhton+request的两种实现方式如下: 方法一:使用requests.request() 示例代码如下: 1.导入requests和json impor ...
- 怎么将CAD转PNG格式?这两种方法值得收藏
在从事相关CAD工作的小伙伴们都知道,CAD中不光需要绘制各种各样的图纸,还需要根据工作的需要来进行图纸格式的转换工作.那有的时候就需要将CAD转换成PNG格式的图片进行使用.那怎么将CAD转PNG格 ...
- 将网址url中的参数转化为JSON格式的两种方法
在我们进入主题前,我先先看下获取网址URL的方法: window.location.href // 设置或获取整个URL为字符串 window.location.hash // 设置或获取href属性 ...
- Oracle导出/导入数据方法--两种方法(pde格式/dmp格式)
转至:https://www.cnblogs.com/houbxblogs/articles/13365557.html?ivk_sa=1024320u 1.导出数据方法一(pde格式) 工具→ 导出 ...
- 用Python递归解决阿拉伯数字转为中文财务数字格式的问题(2)--打开思路的一种方法
几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归. 虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的. ...
- web 开发之js---js 实现网页中播放wav的一种方法(flash播放器)
http://blog.csdn.net/whumr1/article/details/6948160
- 将图片base64格式转换为file对象并读取(两种方式读取)
两种方式读取,一种URL.createObjectURL,另一种fileReader var base64 = ` data:image/jpeg;base64,/9j/4AAQSkZJRgABA ...
- FFmpeg学习4:音频格式转换
前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...
随机推荐
- 更新Vue-cli4与Eslint插件自动保存
Vue-cli更新 此更新为Vue-cli3更新为4,可使用node来查看本机的安装版本,vue -V,此版本(cli4)需要node v8.9 或更高版本 (推荐 v10 以上),查看node版本可 ...
- C语言基础题 22年5月
(十六进制 %x 20.0f是%f long 是%ld unsigned int %#o ) 编程题: 整数浮点数的上溢下溢 strcpy函数代码 int search(char *s, ch ...
- python 修改excel文件内容(修改excel文件日期每天保存一份)
import xlrd import xlwt from xlutils.copy import copy import time import datetime def setStyle(name, ...
- jwt auth0 和 jsonwebtoken比较
参考: https://blog.csdn.net/lizz861109/article/details/104614942/
- 自己动手从零写桌面操作系统GrapeOS系列教程——22.文件系统与FAT16
学习操作系统原理最好的方法是自己写一个简单的操作系统. 新买的硬盘和优盘在第一次使用时需要格式化,有时候还需要分区.这是为什么呢?分区和格式化到底是干啥呢?本讲将为大家解开这些疑惑. 一.文件系统 1 ...
- HDFS写操作(简单源码解读)
HDFS最重要的就是写流程了,学校老师教的时候也是重点介绍这个过程(虽然我并没有在任何面试中被问到过).下面从画图和文字两个过程介绍写流程,这次读了源代码之后对整个过程更加清晰了. 一.图解 二.文字 ...
- 使用dataX收获的教训
首先是安装dataX,安装非常简单,只需下载对应的压缩包即可. 下载地址:https://github.com/alibaba/DataX 首先我出现的第一个错误:命令提示符界面出现出现乱码. 解决方 ...
- 垃圾回收之三色标记法(Tri-color Marking)
关于垃圾回收算法,基本就是那么几种:标记-清除.标记-复制.标记-整理.在此基础上可以增加分代(新生代/老年代),每代采取不同的回收算法,以提高整体的分配和回收效率. 无论使用哪种算法,标记总是必要的 ...
- Django之form表单相关操作
目录 摘要 form表单 form表单的action参数 form表单的method参数 request.method方法 简介 get请求传递数据 post请求传递数据 GET/POST实际应用,简 ...
- Algorithm参数记录
一.vector<Point2f> vector是一个存储二维点坐标的容器,其中每个元素都是一个Point2f类型的对象.在OpenCV中,Point2f表示一个由两个单精度浮点数构成的二 ...