在R中用Whisper转录音频遇格式问题:如何转16-Bit WAV?
解决R中音频转16-Bit WAV格式的问题
你之前的代码里,av_audio_convert把输出格式设成了mp3,而且没指定比特深度,这才导致生成的文件不符合Whisper的要求。在R里有两种简单的方法生成16-Bit WAV文件,下面分别说明:
方法一:用你已安装的av包
直接修改av_audio_convert的参数,指定正确的格式和16-bit编码:
# 正确转换为16-Bit WAV av_audio_convert( input = "/Users/mehmetkay-sudo/Desktop/R/ketzer_trans.wav", output = "ketzer_new_16bit.wav", format = "wav", sample_rate = 16000, codec = "pcm_s16le" # 这个编码对应16-bit PCM格式,是Whisper要求的 ) # 之后再用转换好的文件做转录 trans <- predict(model, newdata = "ketzer_new_16bit.wav", language = "de", duration = 30 * 1000, offset = 7 * 1000, token_timestamps = TRUE)
方法二:用tuneR包(更直观)
如果觉得av的参数不好记,可以用tuneR包直接控制音频比特深度:
# 安装并加载包 install.packages("tuneR") library(tuneR) # 读取原音频文件 audio <- readWave("/Users/mehmetkay-sudo/Desktop/R/ketzer_trans.wav") # 设置为16-bit audio@bit <- 16 # 保存为16-Bit WAV writeWave(audio, "ketzer_new_16bit.wav") # 执行转录 trans <- predict(model, newdata = "ketzer_new_16bit.wav", language = "de", duration = 30 * 1000, offset = 7 * 1000, token_timestamps = TRUE)
关键注意点
- 你之前代码里的
file.path行是无效的,直接删掉即可,它没有实际作用 - Whisper要求的是16-bit PCM格式的WAV文件,必须同时满足格式(WAV)和比特深度(16-bit)两个条件
内容的提问来源于stack exchange,提问作者mehmetkay-sudo
相关产品推荐
相关产品推荐

