将 mp3 转录为文本 (python) --> “RIFF id”错误

问题描述

我正在尝试将 mp3 文件转换为文本,但我的代码返回下面概述的错误。任何帮助表示赞赏!

This一个示例 mp3 文件。以下是我尝试过的:

import speech_recognition as sr
print(sr.__version__)
r = sr.Recognizer()

file_audio = sr.AudioFile(r"C:\Users\Andrew\podcast.mp3")

with file_audio as source:
    audio_text = r.record(source)

print(type(audio_text))
print(r.recognize_google(audio_text))

我得到的完整 error。似乎是:

Error: file does not start with RIFF id

感谢您的帮助!

解决方法

您可以做的一件事是将您的 mp3 转换为 wav。使用 mp3 文件进行测试时,我遇到了与您相同的错误。但转换后,您的代码运行良好。也可以编写您的代码,以便您可以使用 mp3,但我的知识到此为止。

也许其他人比我知道的比他能发布的还要多。但是,如果您只是不想进行测试,则可以暂时使用诸如 audacity 之类的工具进行转换。

此外,如果您使用大文件阅读在线相关内容,您可能会遇到问题。但没有什么能阻止你尝试。

这是它的网站:

https://www.geeksforgeeks.org/python-speech-recognition-on-large-audio-files/

,

您需要先将mp3转成wav,然后才能转录,以下是修改后的代码。

import speech_recognition as sr
from pydub import AudioSegment

# convert mp3 file to wav  
src=(r"C:\Users\Andrew\Podcast.mp3")
sound = AudioSegment.from_mp3(src)
sound.export("C:\Users\Andrew\podcast.wav",format="wav")

file_audio = sr.AudioFile(r"C:\Users\Andrew\Podcast.wav")

# use the audio file as the audio source                                        
r = sr.Recognizer()
with file_audio as source:
audio_text = r.record(source)

print(type(audio_text))
print(r.recognize_google(audio_text))

在上面修改的代码中,首先将mp3文件转换成wav然后进行转录处理。