微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pyttsx3 与 Opencv 并行运行

如何解决Pyttsx3 与 Opencv 并行运行

我正在尝试使用 pyttsx3 创建语音输出,而 Opencv 正在捕获和显示图像帧。但是 engine.runandwait() 使循环在预定时间内冻结。这导致图像帧和语音输出的差异。如何在语音输出中同步捕获和显示图像帧?下面是我用线程尝试过的伪代码,但它不起作用

import cv2
import numpy as np
import pyttsx3
from threading import Thread
import threading

def display(cap):
    ret,frame = cap.read()
    if ret == True:
        cv2.imshow('Frame',frame)
    if cv2.waitKey(1) == ord("q"):
        cv2.destroyAllWindows()

def textToSpeech(text):
    engine = pyttsx3.init()
    voices = engine.getProperty("voices")
    engine.setProperty("voice",voices[0].id)
    engine.setProperty("rate",220)
    engine.say(text)
    engine.runAndWait()
    del engine


def say(text,cap):
    t1 = threading.Thread(target=textToSpeech,args=(text,))
    t2 = threading.Thread(target=display,args = (cap,))

    t1.start()
    t2.start()



cap = cv2.VideoCapture(0)
if (cap.isOpened()== False): 
  print("Error opening video stream or file")

while(cap.isOpened()):
  say("welcome",cap)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。