- Introduced Volcengine as a new provider for both TTS and ASR services. - Updated configuration files to include Volcengine-specific parameters such as app_id, resource_id, and uid. - Enhanced the ASR service to support streaming mode with Volcengine's API. - Modified existing tests to validate the integration of Volcengine services. - Updated documentation to reflect the addition of Volcengine as a supported provider for TTS and ASR. - Refactored service factory to accommodate Volcengine alongside existing providers.
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
from providers.asr.buffered import BufferedASRService
|
|
from providers.asr.dashscope import DashScopeRealtimeASRService
|
|
from providers.asr.openai_compatible import OpenAICompatibleASRService
|
|
from providers.asr.volcengine import VolcengineRealtimeASRService
|
|
from providers.factory.default import DefaultRealtimeServiceFactory
|
|
from runtime.ports import ASRServiceSpec
|
|
|
|
|
|
def test_create_asr_service_dashscope_returns_streaming_provider():
|
|
factory = DefaultRealtimeServiceFactory()
|
|
service = factory.create_asr_service(
|
|
ASRServiceSpec(
|
|
provider="dashscope",
|
|
mode="streaming",
|
|
sample_rate=16000,
|
|
api_key="test-key",
|
|
model="qwen3-asr-flash-realtime",
|
|
)
|
|
)
|
|
assert isinstance(service, DashScopeRealtimeASRService)
|
|
assert service.mode == "streaming"
|
|
|
|
|
|
def test_create_asr_service_openai_compatible_returns_offline_provider():
|
|
factory = DefaultRealtimeServiceFactory()
|
|
service = factory.create_asr_service(
|
|
ASRServiceSpec(
|
|
provider="openai_compatible",
|
|
sample_rate=16000,
|
|
api_key="test-key",
|
|
model="FunAudioLLM/SenseVoiceSmall",
|
|
)
|
|
)
|
|
assert isinstance(service, OpenAICompatibleASRService)
|
|
assert service.mode == "offline"
|
|
assert service.enable_interim is False
|
|
|
|
|
|
def test_create_asr_service_volcengine_returns_streaming_provider():
|
|
factory = DefaultRealtimeServiceFactory()
|
|
service = factory.create_asr_service(
|
|
ASRServiceSpec(
|
|
provider="volcengine",
|
|
mode="streaming",
|
|
sample_rate=16000,
|
|
api_key="test-key",
|
|
api_url="wss://openspeech.bytedance.com/api/v3/sauc/bigmodel",
|
|
model="bigmodel",
|
|
app_id="app-1",
|
|
uid="caller-1",
|
|
request_params={"end_window_size": 800},
|
|
)
|
|
)
|
|
assert isinstance(service, VolcengineRealtimeASRService)
|
|
assert service.mode == "streaming"
|
|
assert service.protocol == "seed"
|
|
assert service.app_id == "app-1"
|
|
assert service.uid == "caller-1"
|
|
assert service.request_params["end_window_size"] == 800
|
|
|
|
|
|
def test_create_asr_service_fallback_buffered_for_unsupported_provider():
|
|
factory = DefaultRealtimeServiceFactory()
|
|
service = factory.create_asr_service(
|
|
ASRServiceSpec(
|
|
provider="unknown_provider",
|
|
sample_rate=16000,
|
|
)
|
|
)
|
|
assert isinstance(service, BufferedASRService)
|
|
assert service.mode == "offline"
|