services(stt): allow STT service to passthrough audio
This commit is contained in:
@@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
- Added `audio_passthrough` parameter to `STTService`. If enabled it allows
|
||||||
|
audio frames to be pushed downstream in case other processors need them.
|
||||||
|
|
||||||
- Added input parameter options for `PlayHTTTSService` and
|
- Added input parameter options for `PlayHTTTSService` and
|
||||||
`PlayHTHttpTTSService`.
|
`PlayHTHttpTTSService`.
|
||||||
|
|
||||||
|
|||||||
@@ -451,8 +451,9 @@ class WordTTSService(TTSService):
|
|||||||
class STTService(AIService):
|
class STTService(AIService):
|
||||||
"""STTService is a base class for speech-to-text services."""
|
"""STTService is a base class for speech-to-text services."""
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, audio_passthrough=False, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
self._audio_passthrough = audio_passthrough
|
||||||
self._settings: Dict[str, Any] = {}
|
self._settings: Dict[str, Any] = {}
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
@@ -490,8 +491,11 @@ class STTService(AIService):
|
|||||||
|
|
||||||
if isinstance(frame, AudioRawFrame):
|
if isinstance(frame, AudioRawFrame):
|
||||||
# In this service we accumulate audio internally and at the end we
|
# In this service we accumulate audio internally and at the end we
|
||||||
# push a TextFrame. We don't really want to push audio frames down.
|
# push a TextFrame. We also push audio downstream in case someone
|
||||||
|
# else needs it.
|
||||||
await self.process_audio_frame(frame)
|
await self.process_audio_frame(frame)
|
||||||
|
if self._audio_passthrough:
|
||||||
|
await self.push_frame(frame, direction)
|
||||||
elif isinstance(frame, STTUpdateSettingsFrame):
|
elif isinstance(frame, STTUpdateSettingsFrame):
|
||||||
await self._update_settings(frame.settings)
|
await self._update_settings(frame.settings)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user