能否通过R语言的tuneR::Wave对象生成MP3文件?
将tuneR::Wave对象转换为MP3文件
刚好我之前也遇到过完全一样的需求——用tuneR分割完音频得到Wave对象后,不想生成占空间的WAV文件,直接导出成紧凑的MP3。这里有两个亲测好用的方法,分享给你:
方法1:使用av包(跨平台首选)
av包基于FFmpeg,兼容性拉满,不管是Windows、Mac还是Linux都能顺畅运行,而且不需要额外折腾太多依赖(只要你的系统装了FFmpeg,现在大部分现代系统都自带,没有的话也很容易安装)。
操作步骤很简单:
- 先安装并加载包:
install.packages("av") library(av)
- 直接导出Wave对象:
# 假设你的Wave对象名为my_wave # 单声道场景 av_audio_write( audio = my_wave@left, rate = my_wave@samp.rate, file = "split_audio.mp3", codec = "mp3" ) # 如果是立体声,把audio参数改成cbind(my_wave@left, my_wave@right)即可
方法2:使用tuneR + lame包
这个方法需要依赖系统级的lame命令行工具,所以得先确保你的系统里装了它(Linux可以用apt/yum直接安装,Windows/macOS可以去官网下载预编译版本)。
步骤如下:
- 安装对应的R包:
install.packages(c("tuneR", "lame")) library(tuneR) library(lame)
- 调用
writeMP3导出MP3,还能自定义比特率:
# 导出默认128kbps的MP3,也可以手动设置比特率比如192kbps writeMP3(my_wave, filename = "split_audio.mp3", bitrate = 192)
小提示
- 如果用
lame方法报错,大概率是系统里没安装lame命令行工具,先解决这个问题再试。 av包不仅能转MP3,还支持AAC等其他格式,灵活性更高,我个人更推荐这个方案。
内容的提问来源于stack exchange,提问作者Matthew Hui
相关产品推荐
相关产品推荐

