【Python】MP3音频文件识别(转)中文文本
2025-01-29
事先备注:离线方式,模型做不到100%,且识别出的文本时没有标点符号断句的。
所需python库
speech_recognition:用于语音转文本
pydub:用于mp3转wav
FFmpeg:用于MP3转wav,(仅仅pip安装是不够的,安装它的教程会单独写一篇)
mp3转wav
大多数库是不能直接识别mp3的,所以需要将mp3转为wav文件:
from pydub import AudioSegment
def convert_mp3_to_wav(mp3_file,wav_file):
audio=AudioSegment.from_file(mp3_file,format='mp3')
audio.export(wav_file,format='wav')
wav转为txt文件
def recog_mp3(mp3_audio_file):
wav_audio_file = mp3_audio_file.replace(".mp3", ".wav")
txt_audio_file = mp3_audio_file.replace(".mp3", ".txt")
convert_mp3_to_wav(mp3_audio_file,wav_audio_file)
r = sr.Recognizer()
with sr.AudioFile(wav_audio_file) as source:
audio = r.record(source)
print('识别内容:\n')
audio_text=r.recognize_vosk(audio, language='zh_cn')
#识别出来的文本会有很多空格,这里用replace替换掉
audio_text=audio_text.replace(" ","")
with open(txt_audio_file,'w') as file:
file.write(audio_text)
我这里用的是vosk模型,虽然做不到100%准确率,但大部分是能准确识别的,大概意思是能读出来的,模型来源:VOSK Models
可以复制下载链接之后,用xunlei等软件下载,比chrome浏览器的速度快很多。
这里下载之后,解压到python脚本程序所在的文件夹,并将解压后的文件夹改名为“model”。
其他教程说的recognize_sphinx方式,效果其实很差的,不如vosk。