mirror of
https://github.com/mudler/LocalAI.git
synced 2026-05-18 21:45:01 -04:00
feat(tts): add support for streaming mode (#8291)
* feat(tts): add support for streaming mode Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Send first audio, make sure it's 16 Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
This commit is contained in:
committed by
GitHub
parent
2c44b06a67
commit
68dd9765a0
@@ -49,3 +49,39 @@ class TestBackendServicer(unittest.TestCase):
|
||||
self.fail("LoadModel service failed")
|
||||
finally:
|
||||
self.tearDown()
|
||||
|
||||
def test_tts_stream(self):
|
||||
"""
|
||||
This method tests if TTS streaming works correctly
|
||||
"""
|
||||
try:
|
||||
self.setUp()
|
||||
print("Starting test_tts_stream")
|
||||
with grpc.insecure_channel("localhost:50051") as channel:
|
||||
stub = backend_pb2_grpc.BackendStub(channel)
|
||||
response = stub.LoadModel(backend_pb2.ModelOptions(Model="openbmb/VoxCPM1.5"))
|
||||
print(response)
|
||||
self.assertTrue(response.success)
|
||||
self.assertEqual(response.message, "Model loaded successfully")
|
||||
|
||||
# Test TTSStream
|
||||
tts_request = backend_pb2.TTSRequest(text="VoxCPM is an innovative end-to-end TTS model from ModelBest. This is a streaming test.", dst="test_stream.wav")
|
||||
chunks_received = 0
|
||||
total_audio_bytes = 0
|
||||
|
||||
for reply in stub.TTSStream(tts_request):
|
||||
# Verify that we receive audio chunks
|
||||
if reply.audio:
|
||||
chunks_received += 1
|
||||
total_audio_bytes += len(reply.audio)
|
||||
self.assertGreater(len(reply.audio), 0, "Audio chunk should not be empty")
|
||||
|
||||
# Verify that we received multiple chunks
|
||||
self.assertGreater(chunks_received, 0, "Should receive at least one audio chunk")
|
||||
self.assertGreater(total_audio_bytes, 0, "Total audio bytes should be greater than 0")
|
||||
print(f"Received {chunks_received} chunks with {total_audio_bytes} total bytes")
|
||||
except Exception as err:
|
||||
print(err)
|
||||
self.fail("TTSStream service failed")
|
||||
finally:
|
||||
self.tearDown()
|
||||
|
||||
Reference in New Issue
Block a user