Metadata-Version: 2.1
Name: vocode
Version: 0.1.57
Summary: The all-in-one voice SDK
License: MIT
Author: Ajay Raj
Author-email: ajay@vocode.dev
Requires-Python: >=3.9,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Provides-Extra: io
Requires-Dist: aiohttp (==3.8.4)
Requires-Dist: aiosignal (==1.3.1)
Requires-Dist: anyio (==3.6.2)
Requires-Dist: async-timeout (==4.0.2)
Requires-Dist: attrs (==22.2.0)
Requires-Dist: azure-cognitiveservices-speech (==1.25.0)
Requires-Dist: cachetools (==5.3.0)
Requires-Dist: certifi (==2022.12.7)
Requires-Dist: cffi (==1.15.1)
Requires-Dist: charset-normalizer (==3.0.1)
Requires-Dist: click (==8.1.3)
Requires-Dist: dataclasses-json (==0.5.7)
Requires-Dist: decorator (==5.1.1)
Requires-Dist: fastapi (==0.92.0)
Requires-Dist: frozenlist (==1.3.3)
Requires-Dist: google-api-core (==2.11.0)
Requires-Dist: google-auth (==2.16.3)
Requires-Dist: google-cloud-speech (==2.17.3)
Requires-Dist: google-cloud-texttospeech (==2.14.1)
Requires-Dist: googleapis-common-protos (==1.59.0)
Requires-Dist: grpcio (==1.51.3)
Requires-Dist: grpcio-status (==1.51.3)
Requires-Dist: h11 (==0.14.0)
Requires-Dist: idna (==3.4)
Requires-Dist: jinja2 (==3.1.2)
Requires-Dist: joblib (==1.2.0)
Requires-Dist: langchain (==0.0.117)
Requires-Dist: markupsafe (==2.1.2)
Requires-Dist: marshmallow (==3.19.0)
Requires-Dist: marshmallow-enum (==1.5.1)
Requires-Dist: mccabe (==0.7.0)
Requires-Dist: multidict (==6.0.4)
Requires-Dist: mypy-extensions (==1.0.0)
Requires-Dist: nltk (==3.8.1)
Requires-Dist: numpy (==1.24.2)
Requires-Dist: openai (==0.27.2)
Requires-Dist: packaging (==23.0)
Requires-Dist: pathspec (==0.11.0)
Requires-Dist: platformdirs (==3.1.0)
Requires-Dist: ply (==3.11)
Requires-Dist: proto-plus (==1.22.2)
Requires-Dist: protobuf (==4.22.1)
Requires-Dist: pyasn1 (==0.4.8)
Requires-Dist: pyasn1-modules (==0.2.8)
Requires-Dist: pyaudio (==0.2.13) ; extra == "io"
Requires-Dist: pycodestyle (==2.10.0)
Requires-Dist: pycparser (==2.21)
Requires-Dist: pydantic (>=1.9.0)
Requires-Dist: pydub (==0.25.1) ; extra == "io"
Requires-Dist: pyflakes (>=2.5.0)
Requires-Dist: pyjwt (==2.6.0)
Requires-Dist: python-dotenv (==0.21.1)
Requires-Dist: python-multipart (==0.0.6)
Requires-Dist: pytz (==2022.7.1)
Requires-Dist: pyyaml (==6.0)
Requires-Dist: redis (==4.5.3)
Requires-Dist: regex (==2023.3.23)
Requires-Dist: requests (==2.28.2)
Requires-Dist: rsa (==4.9)
Requires-Dist: six (==1.16.0)
Requires-Dist: sniffio (==1.3.0)
Requires-Dist: sounddevice (==0.4.6) ; extra == "io"
Requires-Dist: sqlalchemy (==1.4.47)
Requires-Dist: starlette (==0.25.0)
Requires-Dist: tenacity (==8.2.2)
Requires-Dist: tomli (==2.0.1)
Requires-Dist: tqdm (==4.65.0)
Requires-Dist: twilio (==7.17.0)
Requires-Dist: typing-extensions (>=3.10.0.2)
Requires-Dist: typing-inspect (==0.8.0)
Requires-Dist: urllib3 (==1.26.14)
Requires-Dist: uvicorn (==0.20.0)
Requires-Dist: websockets (==10.4)
Requires-Dist: yarl (==1.8.2)
Description-Content-Type: text/markdown

# vocode Python SDK

```
pip install vocode
```

```python
import asyncio
import signal
import vocode

vocode.api_key = "YOUR_API_KEY"

from vocode.conversation import Conversation
from vocode.helpers import create_microphone_input_and_speaker_output
from vocode.models.transcriber import DeepgramTranscriberConfig
from vocode.models.agent import ChatGPTAgentConfig
from vocode.models.synthesizer import AzureSynthesizerConfig

if __name__ == "__main__":
    microphone_input, speaker_output = create_microphone_input_and_speaker_output(
        use_default_devices=True
    )

    conversation = Conversation(
        input_device=microphone_input,
        output_device=speaker_output,
        transcriber_config=DeepgramTranscriberConfig.from_input_device(microphone_input),
        agent_config=ChatGPTAgentConfig(
          initial_message=BaseMessage(text="Hello!"),
          prompt_preamble="The AI is having a pleasant conversation about life."
        ),
        synthesizer_config=AzureSynthesizerConfig.from_output_device(speaker_output)
    )
    # This allows you to stop the conversation with a KeyboardInterrupt
    signal.signal(signal.SIGINT, lambda _0, _1: conversation.deactivate())
    asyncio.run(conversation.start())
```

