File size: 4,102 Bytes
fcb2b04
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
104
105
106
107
108
109
110
111
112
113
114
115
116
import time
import os
from voice_client import VoiceClient
from stack_voice_integration import StackWithVoice

# Configuration
STACK_API_URL = "http://localhost:5000"
VOICE_API_URL = "http://localhost:8000"
DEFAULT_VOICE = "default"

# Initialize clients
voice_client = VoiceClient(VOICE_API_URL)
stack_voice = StackWithVoice(STACK_API_URL, VOICE_API_URL)

# Helper function to play audio (placeholder)
def play_audio(audio_data: bytes) -> None:
    """Play audio data (placeholder implementation)"""
    output_path = "./output.wav"
    voice_client.download_audio(audio_data, output_path)
    print(f"Audio saved to {output_path}")
    print("To play audio, use: open output.wav (macOS) or your preferred audio player")

# Example 1: Basic voice chat
print("\n=== Example 1: Basic Voice Chat ===")
print("This example simulates a voice conversation with the coding assistant.")
print("In a real implementation, you would provide actual audio files.")

# Create a test prompt audio file (placeholder)
test_prompt = "How do I create a REST API in Python using FastAPI?"
with open("test_prompt.txt", 'w') as f:
    f.write(test_prompt)

print(f"\nTest prompt: {test_prompt}")

# Simulate voice chat
print("\nSimulating voice chat...")
response_audio = stack_voice.voice_chat("test_prompt.wav", DEFAULT_VOICE)

if response_audio:
    play_audio(response_audio)
    print("\nVoice chat completed successfully!")
else:
    print("\nVoice chat failed or no response received")

# Example 2: Voice command to code generation
print("\n\n=== Example 2: Voice Command to Code Generation ===")
print("This example shows how to use voice commands to generate code.")

code_command = "Create a Python class for a banking system with account management"
print(f"\nVoice command: {code_command}")

# Simulate voice command
print("\nExecuting voice command...")
command_response = stack_voice.voice_command(code_command, DEFAULT_VOICE)

if command_response:
    play_audio(command_response)
    print("\nVoice command executed successfully!")
else:
    print("\nVoice command failed or no response received")

# Example 3: Streaming voice responses
print("\n\n=== Example 3: Streaming Voice Responses ===")
print("This example demonstrates streaming voice responses.")

streaming_prompt = "Explain how to implement machine learning in Python"
print(f"\nStreaming prompt: {streaming_prompt}")

# Simulate streaming voice chat
print("\nStarting streaming voice chat...")
stack_voice.streaming_voice_chat("test_prompt.wav", DEFAULT_VOICE)

print("\nStreaming voice chat completed!")

# Example 4: Error handling
print("\n\n=== Example 4: Error Handling ===")
print("This example demonstrates error handling in the voice integration.")

# Test with invalid voice name
print("\nTesting with invalid voice name...")
try:
    invalid_response = stack_voice.voice_chat("test_prompt.wav", "nonexistent_voice")
    if invalid_response:
        play_audio(invalid_response)
except Exception as e:
    print(f"Error handled correctly: {e}")

# Test with empty prompt
print("\nTesting with empty prompt...")
try:
    empty_response = stack_voice.voice_chat("empty_prompt.wav", DEFAULT_VOICE)
    if empty_response:
        play_audio(empty_response)
except Exception as e:
    print(f"Error handled correctly: {e}")

# Example 5: Voice model management
print("\n\n=== Example 5: Voice Model Management ===")
print("This example shows how to manage voice models.")

print("\nListing available voices...")
available_voices = voice_client.list_voices()
print(f"Available voices: {available_voices}")

# Note: Voice cloning requires actual audio files
# print("\nCloning a new voice...")
# clone_result = voice_client.clone_voice("my_audio_sample.wav", "custom_voice")
# print(f"Clone result: {clone_result}")

print("\nAll examples completed!")
print("\n=== Next Steps ===")
print("1. Implement actual speech-to-text for audio_to_text()")
print("2. Integrate with real Stack 2.9 API")
print("3. Add proper audio playback functionality")
print("4. Implement streaming TTS properly")
print("5. Add voice model training with Coqui TTS")