Merge pull request #2473 from TheNotary/adds-interim-transcription-frame-support
adds support to Azure STT for creating InterimTranscriptFrames
This commit is contained in:
@@ -21,6 +21,7 @@ from pipecat.frames.frames import (
|
|||||||
Frame,
|
Frame,
|
||||||
StartFrame,
|
StartFrame,
|
||||||
TranscriptionFrame,
|
TranscriptionFrame,
|
||||||
|
InterimTranscriptionFrame,
|
||||||
)
|
)
|
||||||
from pipecat.services.azure.common import language_to_azure_language
|
from pipecat.services.azure.common import language_to_azure_language
|
||||||
from pipecat.services.stt_service import STTService
|
from pipecat.services.stt_service import STTService
|
||||||
@@ -140,6 +141,7 @@ class AzureSTTService(STTService):
|
|||||||
self._speech_recognizer = SpeechRecognizer(
|
self._speech_recognizer = SpeechRecognizer(
|
||||||
speech_config=self._speech_config, audio_config=audio_config
|
speech_config=self._speech_config, audio_config=audio_config
|
||||||
)
|
)
|
||||||
|
self._speech_recognizer.recognizing.connect(self._on_handle_recognizing)
|
||||||
self._speech_recognizer.recognized.connect(self._on_handle_recognized)
|
self._speech_recognizer.recognized.connect(self._on_handle_recognized)
|
||||||
self._speech_recognizer.start_continuous_recognition_async()
|
self._speech_recognizer.start_continuous_recognition_async()
|
||||||
|
|
||||||
@@ -197,3 +199,15 @@ class AzureSTTService(STTService):
|
|||||||
self._handle_transcription(event.result.text, True, language), self.get_event_loop()
|
self._handle_transcription(event.result.text, True, language), self.get_event_loop()
|
||||||
)
|
)
|
||||||
asyncio.run_coroutine_threadsafe(self.push_frame(frame), self.get_event_loop())
|
asyncio.run_coroutine_threadsafe(self.push_frame(frame), self.get_event_loop())
|
||||||
|
|
||||||
|
def _on_handle_recognizing(self, event):
|
||||||
|
if event.result.reason == ResultReason.RecognizingSpeech and len(event.result.text) > 0:
|
||||||
|
language = getattr(event.result, "language", None) or self._settings.get("language")
|
||||||
|
frame = InterimTranscriptionFrame(
|
||||||
|
event.result.text,
|
||||||
|
self._user_id,
|
||||||
|
time_now_iso8601(),
|
||||||
|
language,
|
||||||
|
result=event,
|
||||||
|
)
|
||||||
|
asyncio.run_coroutine_threadsafe(self.push_frame(frame), self.get_event_loop())
|
||||||
|
|||||||
Reference in New Issue
Block a user