通过 Python 使用 Vosk 语音识别

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

我尝试在 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 命令相反的结果...

有什么想法吗? 谢谢你

python speech-recognition vosk
1个回答
0
投票

当检测到静音时,

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"])


你会得到句子列表。

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