Implement DashScope ASR provider and enhance ASR service architecture
- Added DashScope ASR service implementation for real-time streaming. - Updated ASR provider logic to support DashScope alongside existing providers. - Enhanced runtime metadata resolution to include DashScope as a valid ASR provider. - Modified configuration files and documentation to reflect the addition of DashScope. - Introduced tests to validate DashScope integration and ASR service behavior. - Refactored ASR service factory to accommodate new provider options and modes.
This commit is contained in:
46
engine/tests/test_asr_factory_modes.py
Normal file
46
engine/tests/test_asr_factory_modes.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from providers.asr.buffered import BufferedASRService
|
||||
from providers.asr.dashscope import DashScopeRealtimeASRService
|
||||
from providers.asr.openai_compatible import OpenAICompatibleASRService
|
||||
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"
|
||||
|
||||
|
||||
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"
|
||||
Reference in New Issue
Block a user