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:
@@ -34,6 +34,7 @@ class BufferedASRService(BaseASRService):
|
||||
language: str = "en"
|
||||
):
|
||||
super().__init__(sample_rate=sample_rate, language=language)
|
||||
self.mode = "offline"
|
||||
|
||||
self._audio_buffer: bytes = b""
|
||||
self._current_text: str = ""
|
||||
@@ -86,6 +87,23 @@ class BufferedASRService(BaseASRService):
|
||||
self._current_text = ""
|
||||
self._audio_buffer = b""
|
||||
return text
|
||||
|
||||
async def get_final_transcription(self) -> str:
|
||||
"""Offline compatibility method used by DuplexPipeline."""
|
||||
return self.get_and_clear_text()
|
||||
|
||||
def clear_buffer(self) -> None:
|
||||
"""Offline compatibility method used by DuplexPipeline."""
|
||||
self._audio_buffer = b""
|
||||
self._current_text = ""
|
||||
|
||||
async def start_interim_transcription(self) -> None:
|
||||
"""No-op for plain buffered ASR."""
|
||||
return None
|
||||
|
||||
async def stop_interim_transcription(self) -> None:
|
||||
"""No-op for plain buffered ASR."""
|
||||
return None
|
||||
|
||||
def get_audio_buffer(self) -> bytes:
|
||||
"""Get accumulated audio buffer."""
|
||||
@@ -103,6 +121,7 @@ class MockASRService(BaseASRService):
|
||||
|
||||
def __init__(self, sample_rate: int = 16000, language: str = "en"):
|
||||
super().__init__(sample_rate=sample_rate, language=language)
|
||||
self.mode = "offline"
|
||||
self._transcript_queue: asyncio.Queue[ASRResult] = asyncio.Queue()
|
||||
self._mock_texts = [
|
||||
"Hello, how are you?",
|
||||
@@ -145,3 +164,18 @@ class MockASRService(BaseASRService):
|
||||
continue
|
||||
except asyncio.CancelledError:
|
||||
break
|
||||
|
||||
def clear_buffer(self) -> None:
|
||||
return None
|
||||
|
||||
async def get_final_transcription(self) -> str:
|
||||
return ""
|
||||
|
||||
def get_and_clear_text(self) -> str:
|
||||
return ""
|
||||
|
||||
async def start_interim_transcription(self) -> None:
|
||||
return None
|
||||
|
||||
async def stop_interim_transcription(self) -> None:
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user