编程笔记

编程笔记

【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。