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