Skip to content
Transcribe audio from a Call using IBM Watson
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Example code for connecting a Nexmo Voice API call to IBM Watson via websockets

You can use this code as a base for doing real time transcription on a phone call using IBM Watsons Speech to Text API.

The Audio stream is sent over a websocket to your server and you then relay that on to the Watson websocket interface, Watson replies on the same connction with transcription responses.

Running the example

To run this on your machine you'll need an up-to-date version of Python 2. Install dependencies with:

pip install --upgrade -r requirements.txt

You'll need to edit the file to add in your own service credentials from watson and also specify the hostname where your machine is running, tools like ngrok are great for exposing your local machine to the internet.

By default the server runs on port 8000

You will also need to set the correct speech model, we reccomend for all phone calls you use Narrowband Audio.

Run the server like this:

python ./ 

Linking to Nexmo

You will need to create a new application with the Nexmo CLI and set the answer_url as http://[YOUR HOSTNAME]/ncco and the event_url as http://[YOUR HOSTNAME]/event The server will return an appropriate NCCO. Link a number to your application and then when you call the number you will be connected throgh to Watson, simply start talking and you should see results printed to the console.


This example code simply prints the reponses from Watson to the console, however to integrate it with your own applicaiton you should extend the on_watson_message function in

You can’t perform that action at this time.