Moving the environment variables to inside the demo.
This commit is contained in:
@@ -29,6 +29,8 @@ 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")
|
||||||
|
|
||||||
transport = SmallWebRTCTransport(
|
transport = SmallWebRTCTransport(
|
||||||
webrtc_connection=webrtc_connection,
|
webrtc_connection=webrtc_connection,
|
||||||
params=TransportParams(
|
params=TransportParams(
|
||||||
@@ -37,7 +39,7 @@ 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,
|
||||||
end_of_turn_analyzer=SmartTurnAnalyzer(),
|
end_of_turn_analyzer=SmartTurnAnalyzer(url=remote_smart_turn_url),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,23 @@ 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")
|
||||||
|
|
||||||
|
# To use this locally, set the environment variable LOCAL_SMART_TURN_MODEL_PATH
|
||||||
|
# to the path where the smart-turn repo is cloned.
|
||||||
|
#
|
||||||
|
# Example setup:
|
||||||
|
#
|
||||||
|
# # Git LFS (Large File Storage)
|
||||||
|
# brew install git-lfs
|
||||||
|
# # Hugging Face uses LFS to store large model files, including .mlpackage
|
||||||
|
# git lfs install
|
||||||
|
# # Clone the repo with the smart_turn_classifier.mlpackage
|
||||||
|
# git clone https://huggingface.co/pipecat-ai/smart-turn
|
||||||
|
#
|
||||||
|
# Then set the env variable:
|
||||||
|
# export LOCAL_SMART_TURN_MODEL_PATH=./smart-turn
|
||||||
|
# or add it to your .env file
|
||||||
|
smart_turn_model_path = os.getenv("LOCAL_SMART_TURN_MODEL_PATH")
|
||||||
|
|
||||||
transport = SmallWebRTCTransport(
|
transport = SmallWebRTCTransport(
|
||||||
webrtc_connection=webrtc_connection,
|
webrtc_connection=webrtc_connection,
|
||||||
params=TransportParams(
|
params=TransportParams(
|
||||||
@@ -38,7 +55,9 @@ 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,
|
||||||
end_of_turn_analyzer=LocalCoreMLSmartTurnAnalyzer(params=SmartTurnParams(stop_secs=5)),
|
end_of_turn_analyzer=LocalCoreMLSmartTurnAnalyzer(
|
||||||
|
smart_turn_model_path=smart_turn_model_path, params=SmartTurnParams(stop_secs=5)
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -26,28 +26,12 @@ except ModuleNotFoundError as e:
|
|||||||
|
|
||||||
|
|
||||||
class LocalCoreMLSmartTurnAnalyzer(BaseSmartTurn):
|
class LocalCoreMLSmartTurnAnalyzer(BaseSmartTurn):
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, smart_turn_model_path: str, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
# To use this locally, set the environment variable LOCAL_SMART_TURN_MODEL_PATH
|
|
||||||
# to the path where the smart-turn repo is cloned.
|
|
||||||
#
|
|
||||||
# Example setup:
|
|
||||||
#
|
|
||||||
# # Git LFS (Large File Storage)
|
|
||||||
# brew install git-lfs
|
|
||||||
# # Hugging Face uses LFS to store large model files, including .mlpackage
|
|
||||||
# git lfs install
|
|
||||||
# # Clone the repo with the smart_turn_classifier.mlpackage
|
|
||||||
# git clone https://huggingface.co/pipecat-ai/smart-turn
|
|
||||||
#
|
|
||||||
# Then set the env variable:
|
|
||||||
# export LOCAL_SMART_TURN_MODEL_PATH=./smart-turn
|
|
||||||
# or add it to your .env file
|
|
||||||
smart_turn_model_path = os.getenv("LOCAL_SMART_TURN_MODEL_PATH")
|
|
||||||
|
|
||||||
if not smart_turn_model_path:
|
if not smart_turn_model_path:
|
||||||
logger.error("LOCAL_SMART_TURN_MODEL_PATH is not set.")
|
logger.error("smart_turn_model_path is not set.")
|
||||||
raise Exception("LOCAL_SMART_TURN_MODEL_PATH environment variable must be provided.")
|
raise Exception("smart_turn_model_path must be provided.")
|
||||||
|
|
||||||
core_ml_model_path = f"{smart_turn_model_path}/coreml/smart_turn_classifier.mlpackage"
|
core_ml_model_path = f"{smart_turn_model_path}/coreml/smart_turn_classifier.mlpackage"
|
||||||
|
|
||||||
|
|||||||
@@ -17,13 +17,13 @@ from pipecat.audio.turn.base_smart_turn import BaseSmartTurn
|
|||||||
|
|
||||||
|
|
||||||
class SmartTurnAnalyzer(BaseSmartTurn):
|
class SmartTurnAnalyzer(BaseSmartTurn):
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, url: str, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
self.remote_smart_turn_url = os.getenv("REMOTE_SMART_TURN_URL")
|
self.remote_smart_turn_url = url
|
||||||
|
|
||||||
if not self.remote_smart_turn_url:
|
if not self.remote_smart_turn_url:
|
||||||
logger.error("REMOTE_SMART_TURN_URL is not set.")
|
logger.error("remote_smart_turn_url is not set.")
|
||||||
raise Exception("REMOTE_SMART_TURN_URL environment variable must be provided.")
|
raise Exception("remote_smart_turn_url must be provided.")
|
||||||
|
|
||||||
# Use a session to reuse connections (keep-alive)
|
# Use a session to reuse connections (keep-alive)
|
||||||
self.session = requests.Session()
|
self.session = requests.Session()
|
||||||
|
|||||||
Reference in New Issue
Block a user