Как добавить возможность распознования голоса python?

Рейтинг: 0Ответов: 0Опубликовано: 13.07.2023

У меня есть вопрос как добавить возможность распознания текста в python голосом. Я пытался реализовать это не одной библиотекой но у меня не получилось. я хотел бы реализовать распознание голоса с последующим ответом от chatgpt. Ответившим буду признателен и смогу отблагодарить)

import openai
import time
import silero
import sounddevice as sd
import torch
import pyaudio
import eel
import speech_recognition as sr

language = "ru"
model_id = "ru_v3"
sample_rate = 48000
speaker = "baya"
put_accent = True
put_yo = True
device = torch.device("cpu")

model, _ = torch.hub.load(repo_or_dir='snakers4/silero-models',
                                     model='silero_tts',
                                     language=language,
                                     speaker=model_id)




openai.api_key = 'token'

chat_history = [{'role': 'system', 'content': 'Ты мой помощник, тебя зовут Гэри'}]

def chat_with_model(user_input):
    messages = chat_history + [{'role': 'user', 'content': user_input}]
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0613",
        max_tokens=1024,
        messages=messages
    )
    generated_text = response.choices[0].message.content

    chat_history.append({'role': 'assistant', 'content': generated_text})

    return generated_text

def record_volume():
    wlcmtxt = "Добрый день. Я Гэри\nСлушаю вас..."
    audiorec = model.apply_tts(text=wlcmtxt,
                            speaker=speaker,
                            sample_rate=sample_rate,
                            put_accent=put_accent,
                            put_yo=put_yo)
    r = sr.Recognizer()
    with sr.Microphone(device_index=1) as source:
        print("Добрый день. Я Гэри\nСлушаю вас...")
        sd.play(audiorec, sample_rate)
        time.sleep(len(audiorec) / sample_rate)
        sd.stop()
        audio = r.listen(source)
    query = r.recognize_google(audio, language="ru-RU")
    print(f'user:{query.lower()}')

while True:
    user_input = input("user: ")
    if user_input.lower() == 'exit':
        break

    response = chat_with_model(user_input)
    txt = response
    # Выводим ответ модели
    model.to(device)

    audio = model.apply_tts(text=txt,
                            speaker=speaker,
                            sample_rate=sample_rate,
                            put_accent=put_accent,
                            put_yo=put_yo)

    # выводим текст и воспроизводим

    print(txt)
    sd.play(audio, sample_rate)
    time.sleep(len(audio) / sample_rate)
    sd.stop()

Ответы

Ответов пока нет.