examples(websocket-server): use VAD analyzer from transport

This commit is contained in:
Aleix Conchillo Flaqué
2024-05-31 11:30:03 -07:00
parent 428c8af77e
commit 3fef818843
3 changed files with 12 additions and 46 deletions

View File

@@ -1,39 +0,0 @@
#
# Copyright (c) 2024, Daily
#
# SPDX-License-Identifier: BSD 2-Clause License
#
import asyncio
import sys
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineTask
from pipecat.transports.network.websocket_server import WebsocketServerTransport
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")
async def main():
transport = WebsocketServerTransport()
pipeline = Pipeline([transport.input(), transport.output()])
task = PipelineTask(pipeline)
runner = PipelineRunner()
await runner.run(task)
if __name__ == "__main__":
asyncio.run(main())

View File

@@ -173,6 +173,7 @@
} }
function stopAudio(closeWebsocket) { function stopAudio(closeWebsocket) {
playTime = 0;
isPlaying = false; isPlaying = false;
startBtn.disabled = false; startBtn.disabled = false;
stopBtn.disabled = true; stopBtn.disabled = true;

View File

@@ -12,13 +12,16 @@ import sys
from pipecat.frames.frames import LLMMessagesFrame from pipecat.frames.frames import LLMMessagesFrame
from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.runner import PipelineRunner from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineTask from pipecat.pipeline.task import PipelineParams, PipelineTask
from pipecat.processors.aggregators.llm_response import LLMAssistantResponseAggregator, LLMUserResponseAggregator from pipecat.processors.aggregators.llm_response import (
LLMAssistantResponseAggregator,
LLMUserResponseAggregator
)
from pipecat.services.elevenlabs import ElevenLabsTTSService from pipecat.services.elevenlabs import ElevenLabsTTSService
from pipecat.services.openai import OpenAILLMService from pipecat.services.openai import OpenAILLMService
from pipecat.services.whisper import WhisperSTTService from pipecat.services.whisper import WhisperSTTService
from pipecat.transports.network.websocket_server import WebsocketServerParams, WebsocketServerTransport from pipecat.transports.network.websocket_server import WebsocketServerParams, WebsocketServerTransport
from pipecat.vad.silero import SileroVAD from pipecat.vad.silero import SileroVADAnalyzer
from loguru import logger from loguru import logger
@@ -33,13 +36,15 @@ async def main():
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
transport = WebsocketServerTransport( transport = WebsocketServerTransport(
params=WebsocketServerParams( params=WebsocketServerParams(
audio_in_enabled=True,
audio_out_enabled=True, audio_out_enabled=True,
add_wav_header=True add_wav_header=True,
vad_enabled=True,
vad_analyzer=SileroVADAnalyzer(),
vad_audio_passthrough=True
) )
) )
vad = SileroVAD(audio_passthrough=True)
llm = OpenAILLMService( llm = OpenAILLMService(
api_key=os.getenv("OPENAI_API_KEY"), api_key=os.getenv("OPENAI_API_KEY"),
model="gpt-4o") model="gpt-4o")
@@ -64,7 +69,6 @@ async def main():
pipeline = Pipeline([ pipeline = Pipeline([
transport.input(), # Websocket input from client transport.input(), # Websocket input from client
vad, # VAD to detect user speech
stt, # Speech-To-Text stt, # Speech-To-Text
tma_in, # User responses tma_in, # User responses
llm, # LLM llm, # LLM