This example app demonstrates how to use the Deepgram Text-to-Speech API over WebSockets with Flask/Python + OpenAI.
The flow of this sample is:
- A websocket is opened from the UI to the backend Flask component
- Text is sent over a websocket to the backend component
- If a connection has not been established to Deepgram, create a websocket connection using the Python SDK and send the text to convert to audio
- Take the input provided and pass the text along to OpenAI. Stream the LLM's resposne back to the backend component.
- An audio byte response with synthesized text-to-speech is returned and forward back through the WebSocket created by the UI
- Those audio bytes are then played by the media device contained within your browser
Deepgram is a voice AI company providing speech-to-text and language understanding capabilities to make data readable and actionable by human or machines.
Before you start, it's essential to generate a Deepgram API key to use in this project. Sign-up now for Deepgram and create an API key.
Follow these steps to get started with this starter application.
Go to GitHub and clone the repository.
Install the project dependencies.
pip install -r requirements.txt
If using bash, this can be done in your ~/.bash_profile
like so:
export DEEPGRAM_API_KEY="YOUR_DEEPGRAM_API_KEY"
If using bash, this can be done in your ~/.bash_profile
like so:
export OPENAI_API_KEY="YOUR_OPENAI_API_KEY"
If you have set your DEEPGRAM_API_KEY
environment variable, start the Backend go application using this command:
python app.py
If you haven't, this could also be done by a simple export before executing your Go application:
DEEPGRAM_API_KEY="YOUR_DEEPGRAM_API_KEY" OPENAI_API_KEY="YOUR_OPENAI_API_KEY" python app.py
This will start both the Frontend UI and Backend Component. You should see output like this:
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
Copy and paste the URL with port (ie http://127.0.0.1:5000
) into your web browser to start converting text into audio!
If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The Security Policy details the procedure for contacting Deepgram.
We love to hear from you so if you have questions, comments or find a bug in the project, let us know! You can either:
- Open an issue in this repository
- Join the Deepgram Github Discussions Community
- Join the Deepgram Discord Community
This project is licensed under the MIT license. See the LICENSE file for more info.