move smart turn files to audio.turn.smart_turn package
This commit is contained in:
@@ -17,9 +17,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
`GoogleSTTService`, `GoogleTTSService`, and `GoogleVertexLLMService`.
|
`GoogleSTTService`, `GoogleTTSService`, and `GoogleVertexLLMService`.
|
||||||
|
|
||||||
- Added support for Smart Turn Detection via the `turn_analyzer` transport
|
- Added support for Smart Turn Detection via the `turn_analyzer` transport
|
||||||
parameter. You can now choose between `SmartTurnAnalyzer()` for remote
|
parameter. You can now choose between `HttpSmartTurnAnalyzer()` or
|
||||||
inference or `LocalCoreMLSmartTurnAnalyzer()` for on-device inference using
|
`FalSmartTurnAnalyzer()` for remote inference or
|
||||||
Core ML.
|
`LocalCoreMLSmartTurnAnalyzer()` for on-device inference using Core ML.
|
||||||
|
|
||||||
- `DeepgramTTSService` accepts `base_url` argument again, allowing you to
|
- `DeepgramTTSService` accepts `base_url` argument again, allowing you to
|
||||||
connect to an on-prem service.
|
connect to an on-prem service.
|
||||||
|
|||||||
@@ -95,5 +95,5 @@ OPENROUTER_API_KEY=...
|
|||||||
PIPER_BASE_URL=...
|
PIPER_BASE_URL=...
|
||||||
|
|
||||||
# Smart turn
|
# Smart turn
|
||||||
LOCAL_SMART_TURN_MODEL_PATH=
|
LOCAL_SMART_TURN_MODEL_PATH=...
|
||||||
REMOTE_SMART_TURN_URL=
|
FAL_SMART_TURN_API_KEY=...
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import aiohttp
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from pipecat.audio.turn.http_smart_turn import HttpSmartTurnAnalyzer
|
from pipecat.audio.turn.smart_turn.fal_smart_turn import FalSmartTurnAnalyzer
|
||||||
from pipecat.audio.vad.silero import SileroVADAnalyzer
|
from pipecat.audio.vad.silero import SileroVADAnalyzer
|
||||||
from pipecat.audio.vad.vad_analyzer import VADParams
|
from pipecat.audio.vad.vad_analyzer import VADParams
|
||||||
from pipecat.pipeline.pipeline import Pipeline
|
from pipecat.pipeline.pipeline import Pipeline
|
||||||
@@ -30,8 +30,6 @@ load_dotenv(override=True)
|
|||||||
async def run_bot(webrtc_connection: SmallWebRTCConnection):
|
async def run_bot(webrtc_connection: SmallWebRTCConnection):
|
||||||
logger.info(f"Starting bot")
|
logger.info(f"Starting bot")
|
||||||
|
|
||||||
remote_smart_turn_url = os.getenv("REMOTE_SMART_TURN_URL")
|
|
||||||
|
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
transport = SmallWebRTCTransport(
|
transport = SmallWebRTCTransport(
|
||||||
webrtc_connection=webrtc_connection,
|
webrtc_connection=webrtc_connection,
|
||||||
@@ -41,8 +39,8 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection):
|
|||||||
vad_enabled=True,
|
vad_enabled=True,
|
||||||
vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)),
|
vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)),
|
||||||
vad_audio_passthrough=True,
|
vad_audio_passthrough=True,
|
||||||
turn_analyzer=HttpSmartTurnAnalyzer(
|
turn_analyzer=FalSmartTurnAnalyzer(
|
||||||
url=remote_smart_turn_url, aiohttp_session=session
|
api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -9,8 +9,8 @@ import os
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from pipecat.audio.turn.base_smart_turn import SmartTurnParams
|
from pipecat.audio.turn.smart_turn.base_smart_turn import SmartTurnParams
|
||||||
from pipecat.audio.turn.local_coreml_smart_turn import LocalCoreMLSmartTurnAnalyzer
|
from pipecat.audio.turn.smart_turn.local_coreml_smart_turn import LocalCoreMLSmartTurnAnalyzer
|
||||||
from pipecat.audio.vad.silero import SileroVADAnalyzer
|
from pipecat.audio.vad.silero import SileroVADAnalyzer
|
||||||
from pipecat.audio.vad.vad_analyzer import VADParams
|
from pipecat.audio.vad.vad_analyzer import VADParams
|
||||||
from pipecat.pipeline.pipeline import Pipeline
|
from pipecat.pipeline.pipeline import Pipeline
|
||||||
0
src/pipecat/audio/turn/smart_turn/__init__.py
Normal file
0
src/pipecat/audio/turn/smart_turn/__init__.py
Normal file
@@ -8,7 +8,7 @@ from typing import Optional
|
|||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
|
|
||||||
from pipecat.audio.turn.http_smart_turn import HttpSmartTurnAnalyzer
|
from pipecat.audio.turn.smart_turn.http_smart_turn import HttpSmartTurnAnalyzer
|
||||||
|
|
||||||
|
|
||||||
class FalSmartTurnAnalyzer(HttpSmartTurnAnalyzer):
|
class FalSmartTurnAnalyzer(HttpSmartTurnAnalyzer):
|
||||||
@@ -12,7 +12,7 @@ import aiohttp
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from pipecat.audio.turn.base_smart_turn import BaseSmartTurn, SmartTurnTimeoutException
|
from pipecat.audio.turn.smart_turn.base_smart_turn import BaseSmartTurn, SmartTurnTimeoutException
|
||||||
|
|
||||||
|
|
||||||
class HttpSmartTurnAnalyzer(BaseSmartTurn):
|
class HttpSmartTurnAnalyzer(BaseSmartTurn):
|
||||||
@@ -10,7 +10,7 @@ from typing import Any, Dict
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from pipecat.audio.turn.base_smart_turn import BaseSmartTurn
|
from pipecat.audio.turn.smart_turn.base_smart_turn import BaseSmartTurn
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import coremltools as ct
|
import coremltools as ct
|
||||||
@@ -25,7 +25,7 @@ except ModuleNotFoundError as e:
|
|||||||
|
|
||||||
|
|
||||||
class LocalCoreMLSmartTurnAnalyzer(BaseSmartTurn):
|
class LocalCoreMLSmartTurnAnalyzer(BaseSmartTurn):
|
||||||
def __init__(self, smart_turn_model_path: str, **kwargs):
|
def __init__(self, *, smart_turn_model_path: str, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
if not smart_turn_model_path:
|
if not smart_turn_model_path:
|
||||||
Reference in New Issue
Block a user