▌分割、转换wav语音文件
首先从手机中导出录音文件,一般是wav或者m4a格式,所以可以通过我之前写的文章利用FFmpeg提取、转换、分割wav文件来分割、转换文件格式。
ffmpeg -i input.wav -f segment -segment_time 49 -c copy -ac 2 -ar 16000 out%03d.wav
上面的意思是:
input.wav
为wav格式的输入音频文件-segment_time 49
将文件分割为49秒一个-ac 2
双声道-ar 16000
转换为16khz 的采样率
▌音频转文本
▌1.PaddleSpeech简介
PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型,一些典型的应用如下:
- 语音识别
- 语音翻译
- 语音合成
github: https://github.com/PaddlePaddle/PaddleSpeech
▌PaddleSpeech安装
pip install paddlespeech
我是在windows10 的wls2上安装成功的,反而在mac上失败,暂时没有去研究处理。
▌实现代码
from paddlespeech.cli.asr.infer import ASRExecutor
import csv
import os
import paddle
import csv
import warnings
warnings.filterwarnings('ignore')
asr_executor = ASRExecutor()
def audio2txt(path):
# 返回path下所有文件构成的一个list列表
print(f"path: {path}")
filelist = os.listdir(path)
# 保证读取按照文件的顺序
filelist.sort(key=lambda x: int(os.path.splitext(x)[0][3:]))
# 遍历输出每一个文件的名字和类型
words = []
for file in filelist:
print(path + '/' + file)
text = asr_executor(
audio_file=path + '/' + file,
device=paddle.get_device(), force_yes=True) # force_yes参数需要注意
words.append(text)
return words
# 保存
def txt2csv(name, txt_all):
with open(f'{name}.csv', 'w', encoding='utf-8') as f:
f_csv = csv.writer(f)
for row in txt_all:
f_csv.writerow([row])
path = "分割后的音频文件目录地址"
# 音频转文本 需要GPU
txt_all = audio2txt(path)
# 存入csv
txt2csv(path, txt_all)
参考: