Spaces:
Sleeping
Sleeping
File size: 3,207 Bytes
dea8d0d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
"""
voice_bot.py — Full Voice-enabled Assistant for NeuraAI v200 Hardcode
- Integrates BotEngine + VoiceEngine
- Handles user input (text or speech)
- Supports personas, voice gender, and polite/friendly styles
- Offline fallback supported
"""
import threading
import queue
import time
try:
from bot_engine import BotEngine
except Exception:
BotEngine = None
try:
from voice_engine import VoiceEngine
except Exception:
VoiceEngine = None
class VoiceBot:
def __init__(self, persona="friendly", voice_gender="female", enable_voice=True):
# Initialize BotEngine
self.bot = BotEngine(persona=persona, enable_voice=enable_voice)
self.enable_voice = enable_voice and (VoiceEngine is not None)
# Initialize VoiceEngine
if self.enable_voice:
self.voice = VoiceEngine(prefer_online=False)
self.voice.set_voice(voice_gender)
else:
self.voice = None
self.persona = persona
self.voice_gender = voice_gender
# ----------------------------
# Change persona / voice
# ----------------------------
def set_persona(self, persona: str):
self.persona = persona
if self.bot:
self.bot.set_persona(persona)
def set_voice_gender(self, gender: str):
self.voice_gender = gender
if self.voice:
self.voice.set_voice(gender)
# ----------------------------
# Speak wrapper (non-blocking)
# ----------------------------
def speak(self, text: str):
if self.enable_voice and self.voice:
try:
self.voice.speak(text)
except Exception:
pass
# ----------------------------
# Generate response
# ----------------------------
def respond(self, user_input: str, user_id="local_user", is_premium=False, online=True):
"""
Main interaction: returns AI response text & speaks it
"""
if self.bot:
reply = self.bot.generate_response(
user_input=user_input,
user_id=user_id,
is_premium=is_premium,
online=online
)
return reply
return "Bot engine not initialized."
# ----------------------------
# Simple interaction loop
# ----------------------------
def chat_loop(self):
print("🎤 VoiceBot Ready! Type 'exit' to quit.\n")
while True:
user_input = input("You: ")
if user_input.lower() in ("exit", "quit"):
print("Exiting VoiceBot...")
break
reply = self.respond(user_input)
print("Bot:", reply)
# ----------------------------
# Introduce assistant
# ----------------------------
def introduce(self):
intro = f"Hello! I am your NeuraAI v200 assistant ({self.persona} persona, {self.voice_gender} voice)."
print(intro)
self.speak(intro)
# ----------------------------
# Quick test
# ----------------------------
if __name__ == "__main__":
vb = VoiceBot(persona="friendly", voice_gender="female", enable_voice=True)
vb.introduce()
vb.chat_loop() |