speech_recognition 抛出错误``audio_data`` 必须是音频数据

问题描述 投票:0回答:1

我有一个视频文件,我想确定演讲者的置信度。为了执行此操作,我首先从视频文件中提取音频。下面是代码。

from moviepy.editor import *    
local_video_path = "Video.mp4"
sound = AudioFileClip(local_video_path)
sound.write_audiofile("sound.wav", 44100, 2, 2000,"pcm_s32le")

以上代码成功运行并创建音频文件。

在下一步中,我将使用语音识别库来确定说话者的置信度。我正在使用以下代码

import speech_recognition as sr

recognizer = sr.Recognizer()

audio = sr.AudioFile('sound.wav')
#text = recognizer.recognize_audio(audio)
text = recognizer.recognize_google(audio)

confidence = recognizer.confidence()

print(confidence)

但我收到错误:

AssertionError: ``audio_data`` must be audio data

我什至尝试了不同的方法,例如来自 this URL 的以下代码。

import speech_recognition as sr

r = sr.Recognizer()
file = sr.AudioFile('sound.wav')
with file as source:
    audio_file = r.record(source,duration=20)
print(r.recognize_google(audio_file))

但是上面的代码给出了 ValueError: Audio file Could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC;检查文件是否损坏或采用其他格式。

如何解决这个问题?

python machine-learning speech-recognition google-speech-api speech-recognition-api
1个回答
1
投票

我建议尝试使用 ffmpeg 从视频中提取音频,如此处所述。这样可以轻松尝试不同的格式,也许能找到一种可行的格式。对我来说,使用

ffmpeg -i 'Video.mp4' -map 0:a -acodec pcm_s16le -ar 22050 -ac 1 audio.wav
提取的 16 位单声道 wav 有效。

作为旁注,您声明您想要“确定说话者的置信度”。 Afaik,返回的置信度象征着转录正确的可能性,而不是说话者的自信程度。

© www.soinside.com 2019 - 2024. All rights reserved.