From 13ea1efc968b2f8ded1f8174e409f4e7f33f6ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Mon, 10 Jun 2024 20:33:40 -0700 Subject: [PATCH] examples: add new 13b-deepgram-transcription --- .../13b-deepgram-transcription.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 examples/foundational/13b-deepgram-transcription.py diff --git a/examples/foundational/13b-deepgram-transcription.py b/examples/foundational/13b-deepgram-transcription.py new file mode 100644 index 000000000..ceefbaa86 --- /dev/null +++ b/examples/foundational/13b-deepgram-transcription.py @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024, Daily +# +# SPDX-License-Identifier: BSD 2-Clause License +# + +import asyncio +import os +import sys + +from pipecat.frames.frames import Frame, TranscriptionFrame +from pipecat.pipeline.pipeline import Pipeline +from pipecat.pipeline.runner import PipelineRunner +from pipecat.pipeline.task import PipelineTask +from pipecat.processors.frame_processor import FrameDirection, FrameProcessor +from pipecat.services.deepgram import DeepgramSTTService +from pipecat.transports.services.daily import DailyParams, DailyTransport + +from runner import configure + +from loguru import logger + +from dotenv import load_dotenv +load_dotenv(override=True) + +logger.remove(0) +logger.add(sys.stderr, level="DEBUG") + + +class TranscriptionLogger(FrameProcessor): + + async def process_frame(self, frame: Frame, direction: FrameDirection): + await super().process_frame(frame, direction) + + if isinstance(frame, TranscriptionFrame): + print(f"Transcription: {frame.text}") + + +async def main(room_url: str): + transport = DailyTransport(room_url, None, "Transcription bot", + DailyParams(audio_in_enabled=True)) + + stt = DeepgramSTTService(os.getenv("DEEPGRAM_API_KEY")) + + tl = TranscriptionLogger() + + pipeline = Pipeline([transport.input(), stt, tl]) + + task = PipelineTask(pipeline) + + runner = PipelineRunner() + + await runner.run(task) + + +if __name__ == "__main__": + (url, token) = configure() + asyncio.run(main(url))