Getting Started with VSDK - Android
The Vivoka SDK is meant to greatly facilitate the creation of voice-enabled applications, regardless of who's providing the underlying technologies!
Installation
Simply import the .aar file into your project with Android Studio and add a gradle dependency to use it.
Forexample,for the vsdk-csdk library:
implementation project(path: 'vsdk')
implementation project(path: ':vsdk-csdk')Configuration
All VSDK engines are to be initialized with a JSON configuration file. This file contains a version, then each engine will declare its own configuration block:
{
    "version": "2.0",
    "csdk": {
        ...
    },
    ...
}We strongly recommend you put this file under a config directory because most engines will generate additional configuration files or use a cache (configurable).
Library versions
You can access the version of VSDK like so:
String vsdk_version = Vsdk.getVersion();Error Handling
The SDK will throw exceptions on each function call. A custom exception class has been created to help track the origin of the error.
try
{
    Vsdk.init(context, "configPath", callback);
}
catch (com.vivoka.vsdk.Exception e)
{
    // print the stacktrace (recommanded)
    e.printFormattedMessage();
    // get the stacktrace in a string
    String error = e.getFormattedMessage();
    // as com.vivoka.vsdk.Exception inherits from the java.lang.Exception class, you can also do this
    e.printStackTrace();
}Audio Management
VSDK being a SDK around voice technologies, audio is a central component. Starting from version 4, audio pipelining has been added for greater power and simplicity.
Pipeline
An audio pipeline is composed of 3 types of audio modules: one Producer, zero or more Modifiers and zero or more Consumers. Simply put: a producer sends audio (either synchronously or asynchronously) into modifiers (if any), and the resulting audio is finally given to consumers (if any).
// Create a pipeline
Pipeline pipeline = new Pipeline();
// Create an audio recorder which inherit from the ProducerModule
AudioRecorder audioRecorder = new AudioRecorder();
try
{
    pipeline.setProducer(audioRecorder);
}
catch (Exception e)
{
    e.printFormattedMessage();
}
// Create a recognizer which is inherited from the ConsumerModule
Recognizer recognizer;
try
{
    pipeline.pushBackConsumer(recognizer);
}
catch (Exception e)
{
    e.printFormattedMessage();
}If you would like to create your own Audio Module, inherit from ProducerModule, ModifierModule or ConsumerModule.
