如何使用 Vosk 获取已知转录文本的音频文件中单词的开始和结束时间?

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

我在Python中使用Vosk(https://alphacephei.com/vosk/),我想获取音频文件中每个单词的开始和结束时间,并且我有音频文件的转录本。

我正在使用我在网上找到的一些代码来使用 Vosk 执行语音到文本的操作,它还给出了每个单词的开始和结束时间。不幸的是,转录并不完美。

既然我有完美的抄本,我想告诉 Vosk 正确的抄本是什么,并让它告诉我每个单词的开始和结束时间。这可能吗?

这是我现在使用的代码:

import wave
import json

from vosk import Model, KaldiRecognizer

model_path = r".\vosk_models\vosk-model-en-us-0.22"
audio_filename = "some_audio_file.wav"

model = Model(model_path)
wf = wave.open(audio_filename, "rb")
rec = KaldiRecognizer(model, wf.getframerate())
rec.SetWords(True)  # Include the start and end times for each word in the output

# get the list of JSON dictionaries
results = []
# recognize speech using vosk model
while True:
    data = wf.readframes(4000)
    if len(data) == 0:
        break
    if rec.AcceptWaveform(data):
        part_result = json.loads(rec.Result())
        results.append(part_result)
part_result = json.loads(rec.FinalResult())
results.append(part_result)

wf.close()  # close audiofile
python speech-recognition speech-to-text vosk
1个回答
-1
投票

也许你可以利用sttcast。它使用 vosk 转录为 HTML 文件,您可以从中收集时间戳和文本以进行更正。我认为如果您有数百小时的音频,则可以自动化该任务,但只有几个小时,您应该考虑手动完成它

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