我尝试在 Python 脚本中使用 Vosk 语音识别,但结果始终是:
{
"text" : ""
}
这对我的文件来说不是问题,因为当我在 DOS 中使用“vosk-transcriber -l fr -ipepe3.wav -o test6.txt”时,它工作得很好,并且我得到了一个带有准确转录的 test6.txt。
这是我的Python:
import vosk
# Load the Vosk model
model = vosk.Model("voskSmallFr")
# Initialize the recognizer with the model
recognizer = vosk.KaldiRecognizer(model, 16000)
# Sample audio file for recognition
audio_file = "speech3.wav"
# Open the audio file
with open(audio_file, "rb") as audio:
while True:
# Read a chunk of the audio file
data = audio.read(4000)
if len(data) == 0:
break
# Recognize the speech in the chunk
recognizer.AcceptWaveform(data)
# Get the final recognized result
result = recognizer.FinalResult()
print(result)
我在 Vosk 官方网站上下载并尝试了所有可用的法语模型(我的 wav 文件是法语)(总共 4 个),脚本运行良好,但没有给出与 Windows 命令相反的结果...
有什么想法吗? 谢谢你
当检测到静音时,
AcceptWaveform()
返回True,您可以使用Result()
检索结果。如果返回 False,您可以使用 PartialResult()
检索部分结果。 FinalResult()
表示流已结束,缓冲区已刷新,并且您检索 剩余 结果,该结果可能是沉默。import json
text = []
with open(audio_file, "rb") as audio:
while True:
data = audio.read(4000)
if len(data) == 0:
break
# if silence detected save result
if recognizer.AcceptWaveform(data):
text.append(json.loads(rec.Result())["text"])
text.append(json.loads(rec.FinalResult())["text"])
你会得到句子列表。