Делаем голосового помощника в Raspberry PiPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Делаем голосового помощника в Raspberry Pi

Сообщение Anonymous »

Я пытаюсь создать небольшой школьный проект, в котором устанавливаю небольшого голосового помощника на Raspberry Pi 4 (с ОС Raspberry Pi), чтобы использовать его в качестве карты в своей школе, но каждый раз, когда я провожу тест, это просто не работает, и я еще недостаточно разбираюсь в кодировании, чтобы знать, где я терплю неудачу или допускаю ошибку, чтобы это работало.
Кстати, да, я знаю говорю по-испански как на родном языке, и да, я снова обратился к искусственному интеллекту, чтобы получить максимальную отдачу от кодирования.
Предполагается, что к Raspberry Pi подключен микрофон и динамики, потому что предполагается, что помощник чтобы ответить на голос.
Это код:

Код: Выделить всё

import os
import torch
from transformers import GPT2LMHeadModel, GPT2Tokenizer
import speech_recognition as sr
from gtts import gTTS
import tempfile
import subprocess

# Función para leer archivos de información
def read_info(file_path):
try:
with open(file_path, 'r', encoding='utf-8') as f:
return f.read().strip()
except FileNotFoundError:
return None

# Inicializar el reconocedor de voz
recognizer = sr.Recognizer()

# Función para obtener la entrada de voz y convertirla a texto
def recognize_speech_from_mic(recognizer, microphone):
with microphone as source:
recognizer.adjust_for_ambient_noise(source)
print("Estoy escuchando...")
audio = recognizer.listen(source)

try:
transcript = recognizer.recognize_google(audio, language='es-ES')
return transcript
except sr.RequestError:
print("API de reconocimiento de voz no disponible.")
except sr.UnknownValueError:
print("No se pudo entender el audio.")
return None

# Ruta a los archivos de información
info_dir = '/home/horaki/Ubicaciones_URP.txt'

# Inicializar el modelo y el tokenizador
model_name = 'gpt2'
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name)

# Mover el modelo a la CPU
model.to('cpu')

# Configurar el micrófono
microphone = sr.Microphone()

while True:
print("Por favor, haz una pregunta sobre un lugar.")
question = recognize_speech_from_mic(recognizer, microphone)
if question:
print(f"Pregunta recibida: {question}")
# Buscar la información del lugar en los archivos
words = question.split()
lugar = words[-1].lower()
info_file = os.path.join(info_dir, f'{lugar}.txt')

# Leer la información
info = read_info(info_file)
if not info:
print(f"No se encontró información para {lugar}")
continue

# Crear el prompt con la información añadida
input_text = f"Información:\n{info}\n\nPregunta: {question}"

# Tokenizar el texto de entrada
input_ids = tokenizer.encode(input_text, return_tensors='pt')

# Generar texto
with torch.no_grad():
output = model.generate(input_ids, max_length=150, num_return_sequences=1)

# Decodificar y mostrar el texto generado
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print("\nRespuesta del modelo:\n")
print(generated_text)

# Convertir el texto generado a voz usando gTTS
tts = gTTS(generated_text, lang='es')
with tempfile.NamedTemporaryFile(delete=True) as fp:
tts.save(fp.name + ".mp3")
subprocess.run(['mpg321', fp.name + ".mp3"])
else:
print("No se recibió una pregunta válida.")

Я пробовал изменить файл .txt, заменить микрофон и динамики и прочитать весь код, но я недостаточно разбираюсь в нем, чтобы понять, где ошибка. Я надеюсь, что вы можете мне помочь. Было бы очень здорово.

Подробнее здесь: https://stackoverflow.com/questions/787 ... spberry-pi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»