首页 > 编程问答 >从我的演讲中识别出特定的单词

从我的演讲中识别出特定的单词

时间:2024-08-09 03:55:33浏览次数:12  
标签:python machine-learning artificial-intelligence speech-recognition vosk

我想实现一个可以在一个人后面重复某个单词的功能。例如:“说娃娃。”可以使用任何其他词来代替娃娃。重点是让助手准确地重复“doll”这个词

我想用 vosk 模块来实现这个。 我该怎么做呢?


import json
import vosk
import pyaudio

MODEL_PATH = "vosk-model-small-en-us-0.15"  # 替换为你的 Vosk 模型路径
WORD_TO_DETECT = "doll"  # 替换为你想让助手重复的词语

# 检查模型是否存在
if not os.path.exists(MODEL_PATH):
    raise ValueError(f"Vosk model not found at path: {MODEL_PATH}")

# 设置 Vosk recognizer
model = vosk.Model(MODEL_PATH)
recognizer = vosk.KaldiRecognizer(model, 16000)

# 初始化 PyAudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000)
stream.start_stream()

print(f"正在监听单词: '{WORD_TO_DETECT}'...")

while True:
    data = stream.read(4000)
    if len(data) == 0:
        break
    if recognizer.AcceptWaveform(data):
        result = recognizer.Result()
        result_dict = json.loads(result)

        if "text" in result_dict:
            text = result_dict["text"]
            words = text.lower().split()
            if WORD_TO_DETECT in words:
                print(f"检测到单词: '{WORD_TO_DETECT}'")
                # 在这里添加你想让助手执行的操作,例如:
                # print(f"你说: '{WORD_TO_DETECT}'") 

代码解释:

  1. 导入必要的库 :
  2. vosk 用于语音识别。
  3. pyaudio 用于音频输入。
  4. json 用于解析识别结果。

  5. 设置模型路径和目标词 :

  6. MODEL_PATH 应指向你下载的 Vosk 模型。
  7. WORD_TO_DETECT 是你想要检测的词语。

  8. 初始化 Vosk recognizer :

  9. 加载 Vosk 模型。
  10. 创建一个 KaldiRecognizer 实例。

  11. 初始化 PyAudio :

  12. 创建一个 PyAudio 实例。
  13. 打开一个音频流,用于从麦克风获取音频数据。

  14. 开始监听 :

  15. 进入一个无限循环,持续监听音频输入。
  16. 读取音频流的数据块。
  17. 将数据块传递给 recognizer 进行识别。

  18. 处理识别结果 :

  19. 如果 recognizer 返回结果,则使用 json.loads 将其解析为字典。
  20. 检查字典中是否存在 "text" 键。
  21. 如果存在,则提取识别到的文本,将其转换为小写,并分割成单词列表。
  22. 检查目标词是否在单词列表中。
  23. 如果找到目标词,则打印一条消息,并执行你想要的操作。

使用方法:

  1. 确保你已经安装了必要的库: vosk , pyaudio
  2. 下载与你的系统架构相匹配的 Vosk 模型,并将 MODEL_PATH 变量更新为模型的路径。
  3. WORD_TO_DETECT 变量替换为你想要检测的词语。
  4. 运行 Python 脚本。
  5. 脚本将开始监听你的语音,并在检测到目标词时打印一条消息。

注意:

  • 你需要根据你的音频输入设备调整 PyAudio 参数。
  • Vosk 模型的准确性取决于模型的质量和你的音频输入质量。
  • 你可以根据自己的需要修改代码,添加更多功能,例如播放音频、控制其他设备等。

标签:python,machine-learning,artificial-intelligence,speech-recognition,vosk
From: 78838735

相关文章

  • 如何从我的 Python 应用程序更新我的 Facebook Business 令牌?
    我有一个使用FacebookBusiness库的Python应用程序。因此,我需要使用Facebook提供的令牌来访问我的见解并操纵它们。但是,这个令牌有一个很长的到期日期,但我想知道是否有办法自动更新这个令牌在我的应用程序中,这样它就不会停止运行。当然可以!你可以使用Facebook提......
  • 哪种编程语言更适合学习数据结构和算法:C++、Java 还是 Python?
    作为一名工程专业的学生,​​我正在尝试决定使用哪种编程语言来学习数据结构和算法(DSA)。我正在考虑C++,它提供高性能和强大的标准模板库,但对于初学者来说可能很复杂。Java具有强大的语法和内置集合,使DSA概念更容易掌握,尽管我不确定它与C++相比的性能。Python以其简单性和......
  • 同时运行多个异步阻塞函数 - Python
    我是Python和协程的新手,我正在尝试利用Python的asyncio库来并行处理阻塞函数。我正在使用python3.8.6。我有一个阻塞函数,它从数组输入中接收不同的输入,我需要每个输入的阻塞函数同时运行。我已经尝试过,但它们似乎仍然按顺序运行:asyncdefmain():tasks=[asyncio......
  • 使用两个连接的字符串调用变量 Python
    抱歉缺乏细节,因为我是python的初学者:c1=c2=c3=c4=c5=Falsex=int(input("Enteranumber1-5:"))ifx>5orx<1:print("Yournumbermustbebetween1and5")else:"c",x=True第8行是连接2个字符串的地方。我不确定......
  • 测试Python中是否存在可执行文件?
    在Python中,有没有一种可移植且简单的方法来测试可执行程序是否存在?简单我的意思是类似which命令的东西,这将是完美的。我不想手动搜索PATH或涉及尝试使用Popen&al执行它并查看它是否失败(这就是我现在正在做的事情,但想象它是launchmissiles)......
  • Python 和 Excel:将数据放入另一个函数中,然后从中获取信息
    我正在尝试将温度/压力数据放入蒸汽表以获得过热焓数据。我已经成功地获取了数据并将其放入Excel文件中,然后它为我提取了焓数据。问题是,当我将温度和压力数据放入蒸汽表时,它实际上并没有进行双重插值,因此焓(H)值实际上从未改变ng。我最终只得到了蒸汽数据中给出......
  • Python 类型提示:显式排除无效的重载组合?
    我有一个带有两个参数的函数,每个参数都可以采用两种类型之一。四个成对组合中的三个有效,但第四个无效。我想找到一种方法来键入提示此场景,可以检查这些类型,但不一定每次调用foo()时都必须编写代码来检查无效情况。有没有办法可以改进foo()、bar()或两......
  • 我在制作 python 语音应用程序时遇到错误
    我编写了一个语音聊天应用程序代码,但是当我们运行此代码并加入语音频道时,我收到照片中的错误错误1错误2这是我的代码;客户端代码:importtkinterastkfromtkinterimportmessageboximportpyaudioimportsocketimportthreadingimporttimeHOST=......
  • pyocr,一个超酷的Python库!
    pyocr是一个用于光学字符识别(OCR)的Python库,它提供了一个简单的接口,允许开发者将图片中的文本提取出来。这个库是对Tesseract-OCR的封装,使得在Python环境中使用OCR技术变得更加便捷。如何安装pyocr首先,要使用pyocr库,您需要安装它。可以使用pip包管理工具来进......
  • pattern,一款超牛的Python库
    在程序开发中,处理文本数据和进行自然语言处理是常见需求。pattern是一个强大的Python库,专为文本分析而设计,提供了丰富的功能,包括自然语言处理、数据挖掘和网络分析等。它简单易用,让程序员能够快速实现复杂的文本处理任务。如何安装pattern在开始使用pattern库之前,首先......