【问题标题】:Convert voice to text while talking in python用python说话时将语音转换为文本
【发布时间】:2019-05-12 01:13:01
【问题描述】:

我制作了一个程序,可以让我说话并将其转换为文本。在我停止说话后,它会转换我的声音。我想做的就是在我说话的时候把我的声音转换成文字。

https://www.youtube.com/watch?v=96AO6L9qp2U&t=2s&ab_channel=StormHack 至少 2:31。

注意托尼显示器的右上角。它在说话时将他的声音转换为文本。我想做同样的事情。能做到吗?

这是我的整个程序:

import speech_recognition as sr 
import pyaudio


r = sr.Recognizer()
with sr.Microphone() as source:
    print("Listening...")
    audio = r.listen(source)
    try:
        text = r.recognize_google(audio)
        print("You said : {}".format(text))
    except:
        print("Sorry could not recognize what you said")

解决方案、提示、提示或任何内容将不胜感激,在此先感谢您。

【问题讨论】:

标签: python python-3.x text-to-speech voice-recognition voice-recording


【解决方案1】:

为了做到这一点,您必须执行所谓的 VAD:语音音频检测,一个简单的方法是从音频中获取一组样本并获取它们的强度,如果它们高于某个阈值,那么您应该开始记录,一旦强度在给定的时间段内低于某个阈值,那么您结束记录并将其发送到服务。你可以找到这个here 的一个例子。

更复杂的系统使用更好的启发式方法来确定用户是否在说话,例如频率以及应用降噪等功能,其他系统也能够在用户说话时像 DeepSpeech 一样对文本执行实时语音2.

【讨论】:

  • 感谢您回答我的问题!你看过我提供的视频吗?如果我完全按照你说的做,我的程序会在我说话时将我的声音转换成文本吗?
  • 不,但如果你按照我说的去做,你的程序将与 Siri 或 Alexa 类似。
【解决方案2】:

要做你想做的事,你需要听的不是一个完整的句子,而是几个词。然后您必须处理音频数据并最终打印结果。这是它的一个非常基本的实现:

import speech_recognition as sr
import threading
import time
from queue import Queue

listen_recognizer = sr.Recognizer()
process_recognizer = sr.Recognizer()

audios_to_process = Queue()

def callback(recognizer, audio_data):
    if audio_data:
        audios_to_process.put(audio_data)

def listen():
    source = sr.Microphone()
    stop_listening = listen_recognizer.listen_in_background(source, callback, 3)
    return stop_listening

def process_thread_func():
    while True:
        if audios_to_process.empty():
            time.sleep(2)
            continue
        audio = audios_to_process.get()
        if audio:
            try:
                text = process_recognizer.recognize_google(audio)
            except:
                pass
            else:
                print(text)

stop_listening = listen()
process_thread = threading.Thread(target=process_thread_func)
process_thread.start()

input()

stop_listening()

如您所见,我使用了 2 个识别器,所以一个会一直在听,另一个会处理音频数据。 第一个监听数据,然后将音频数据添加到队列中并再次监听。同时,另一个识别器正在检查是否有音频数据要处理成一些文本然后打印出来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多