cCheetah - C Quick Start

Platforms

  • Linux (x86_64)
  • macOS (x86_64, arm64)
  • Windows (x86_64)
  • NVIDIA Jetson Nano
  • Raspberry Pi (3, 4)

Requirements

  • C99-compatible compiler
  • CMake (3.13+)
  • For Windows Only: MinGW is required to build the demo

Picovoice Account & AccessKey

Signup or Login to Picovoice Console to get your AccessKey. Make sure to keep your AccessKey secret.

Quick Start

Setup

  1. Clone the repository:
git clone --recurse-submodules https://github.com/Picovoice/cheetah.git

Usage

  1. Include the public header files (picovoice.h and pv_cheetah.h).
  2. Link the project to an appropriate precompiled library for the target platform and load it.
  3. Download a custom model from Picovoice Console or the default model.
  4. Construct the Cheetah object:
static const char* ACCESS_KEY = "${ACCESS_KEY}";
const char *model_file_path = "${MODEL_FILE_PATH}";
float endpoint_duration_sec = 1.f;
pv_cheetah_t *cheetah;
const pv_status_t status = pv_cheetah_init(
ACCESS_KEY
model_file_path,
endpoint_duration_sec,
&cheetah);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
  1. Pass in an audio path to the pv_cheetah_process function:
extern const int16_t *get_next_audio_frame(void);
while (true) {
const int16_t *pcm = get_next_audio_frame();
char *partial_transcript = NULL;
bool is_endpoint = false;
const pv_status_t status = pv_cheetah_process(cheetah, pcm, &partial_transcript, &is_endpoint);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
fprintf(stdout, "%s", partial_transcript);
free(partial_transcript);
if (is_endpoint) {
char *final_transcript = NULL;
status = pv_cheetah_flush(cheetah, &final_transcript);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
fprintf(stdout, "%s\n", final_transcript);
free(final_transcript);
}
}
  1. Release resources explicitly when done with Cheetah:
pv_cheetah_delete(cheetah);

Demo

For the Cheetah SDK, we offer demo applications that demonstrate how to use the Speech-to-Text engine on real-time audio streams (i.e. microphone input) and audio files.

Setup

  1. Clone the Cheetah repository from GitHub using HTTPS:
git clone --recurse-submodules https://github.com/Picovoice/cheetah.git
  1. Build the microphone demo:
cd cheetah
cmake -S demo/c/. -B demo/c/build
cmake --build demo/c/build --target cheetah_demo_mic

Usage

To see the usage options for the demo:

./demo/c/build/cheetah_demo_mic

Run the command corresponding to your platform from the root of the repository:

./demo/c/build/cheetah_demo_mic \
-l lib/${PLATFORM}/${ARCH}/libpv_cheetah.so \
-m lib/common/cheetah_params.pv \
-a ${ACCESS_KEY} \
=d ${AUDIO_DEVICE_INDEX}

For more information on our Cheetah demos for C, head over to our GitHub repository.

Resources

API

GitHub

Benchmark


Issue with this doc? Please let us know.