add: absorb soprano_to_rvc as regular subdirectory

Voice conversion pipeline (Soprano TTS → RVC) with Docker support.
Previously tracked as bare gitlink; removed .git/ directories and
absorbed into main repo for unified tracking.

Includes: Soprano TTS, RVC WebUI integration, Docker configs,
WebSocket API, and benchmark scripts.
Updated .gitignore to exclude large model weights (*.pth, *.pt, *.onnx, *.index).
287 files (3.1GB of ML weights properly excluded via gitignore).
This commit is contained in:
2026-03-04 00:24:53 +02:00
parent 34b184a05a
commit 8ca716029e
287 changed files with 47102 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
#!/usr/bin/env python3
"""
Quick WebSocket test - sends a few tokens and receives audio
"""
import asyncio
import websockets
import json
async def quick_test():
uri = "ws://localhost:8765/ws/stream"
print(f"Connecting to {uri}...")
async with websockets.connect(uri) as websocket:
print("✓ Connected!")
# Send a simple sentence token by token
tokens = ["Hello", "!", " ", "This", " ", "is", " ", "a", " ", "test", "."]
for token in tokens:
print(f"→ Sending: '{token}'")
await websocket.send(json.dumps({"token": token, "pitch_shift": 0}))
# Try to receive audio (non-blocking)
try:
response = await asyncio.wait_for(websocket.recv(), timeout=5.0) # Increased timeout
if isinstance(response, bytes):
print(f" ← Received {len(response)} bytes of audio")
else:
print(f" ← Received: {response}")
except asyncio.TimeoutError:
print(f" (no response yet)")
print("\n→ Flushing buffer...")
await websocket.send(json.dumps({"flush": True}))
# Get remaining audio
try:
while True:
response = await asyncio.wait_for(websocket.recv(), timeout=10.0) # Increased timeout
if isinstance(response, bytes):
print(f" ← Received {len(response)} bytes of audio (flush)")
else:
print(f" ← Received: {response}")
except asyncio.TimeoutError:
print(" (flush complete)")
print("\n✓ Test complete!")
if __name__ == "__main__":
asyncio.run(quick_test())