Powerful NLP API for human conversations
The Discovery SDK allows you to write logic-based interpreters, and let GreenKey's Discovery engine use machine learning to identify intents and extract entities.
You can use your Discovery interpreter to power several voice- and chat-driven workflows
Building a skill in combination with Scribe's Real-Time Dictation
Searching transcribed files for key phrases with Scribe's File Transcription
Powering chat-bot workflows using Discovery as a service
The GreenKey Discovery SDK is hosted by the Voice Program of the Fintech Open Source Foundation (FINOS). If you are a company interested in the evolution of open standards, interoperability, and innovation in the financial services sector, please consider joining FINOS.
- Step through the 'digit' interpreter example.
- Customize your own interpreter.
- Transcribing voice audio files with Scribe and using the Discovery engine.
- Docker 17+ (or Discovery Binaries)
- Python 3 with
To ensure your dependencies install correctly, we recommend that you upgrade your
setuptools before proceeding further.
python3 -m pip install --upgrade setuptools
Now you are ready to install the required dependencies with
This will provide you with the packages needed to run the
test_discovery.py script (see the 'digit' example below), as well as the Discovery CLI.
python3 -m pip install -r requirements.txt
Using Compiled Binary Files
If you are unable to use Docker, contact us to obtain compiled binary files for Discovery.
Simply place the binaries directory into the SDK directory before running
The test script will automatically detect the binaries directory and use that instead of a Docker image.
Make sure not to change the name of the binaries file when you move it.
You should end up with a structure like the following for the
test_discovery.py script to work.
└───greenkey-discovery-sdk └───discovery_binaries_windows_10_64bit__python37_64bit └───examples └───gk_cli │ discovery_config.py │ README.md │ test_discovery.py
Contact us to obtain credentials to obtain the Discovery Docker container from our repository and launch the Discovery engine.
Discovery Examples Directory Overview
Each discovery example contains a folder named
custom, which in turn contains the required
Some examples contain a
schemas key in the
definitions.yaml file to customize the return json.
They also contain example scripts to see how the particular configuration will detect entities.
examples └── digit ├── custom │ └── definitions.yaml ├── send_transcript_to_discovery.sh └── tests.txt
The 'digit' Interpreter Example
- Test cases for the room dialing example are in
intent_whitelist: digit test: dial number transcript: please dial eight room_number: 8 test: dial number transcript: press one eight room_number: 1 ...
- The definition file,
examples/digit/custom/definitions.yaml, contains examples that match the tests
entities: room_number: - "@num" intents: digit: examples: - "please select @num to speak to the operator" - "to change your order press @room_number" - "if this is an emergency dial @room_number" - "for animal control services press @room_number"
where "digit" is the name of the intent and the entities value ("room_number") match entities in
Creating a custom project can be done by following the structure of an existing example found in the
examples folder. Refer to the wiki for further information on customization
Check out our deployment documentation for full details on deploying Discovery.
Code of Conduct
Please make sure you read and observe our Code of Conduct.
Pull Request process
- Fork it
- Create your feature branch (
git checkout -b feature/fooBar)
- Commit your changes (
git commit -am 'Add some fooBar')
- Push to the branch (
git push origin feature/fooBar)
- Create a new Pull Request
NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.
Need an ICLA? Unsure if you are covered under an existing CCLA? Email firstname.lastname@example.org
For all others who have aided this project, please see the list of contributors.
The code in this repository is distributed under the Apache License, Version 2.0.
Copyright 2020 GreenKey Technologies