Coder Social home page Coder Social logo

wit-android-sdk's Introduction

wit-android-sdk

This SDK is community-maintained and likely broken. Please use the HTTP API or the Node.js/Python/Ruby SDKs for non-experimental needs (https://wit.ai/docs). We gladly accept pull requests

The SDK can capture intents and entities:

  • from the microphone of the device
  • from a text (using a Java String)
  • from an audio stream (using a Java java.io.InputStream)

How to build

To build the jar and resources files

$ gradle buildzip

This will output a zip file (wit.sdk/build/wit-android-sdk.zip) containing:

  • wit.sdk.jar
  • jniLibs build of our C library for each platform
  • layout and drawable-* resources

Quick start

See quickstart.md

API

/**
 * Configure the voice activity detection algorithm:
 * - Wit.vadConfig.disable
 * - Wit.vadConfig.detectSpeechStop (default)
 * - Wit.vadConfig.full
 */
public vadConfig vad = vadConfig.detectSpeechStop;
/**
 * Constructor
 * @param accessToken the Wit access Token
 * @param witListener The class implementing the IWitListener interface to receive callback from
 *                    the wit SDK
 */    
public Wit(String accessToken, IWitListener witListener)
/**
 * Starts a new recording session. witDidGraspIntent() will be called once completed.
 * @throws IOException
 */
public void startListening() throws IOException
/**
 * Stops the current recording if any, which will lead to a call to witDidGraspIntent().
 */
public void stopListening()
/**
 * Start / stop the audio processing. Once the API response is received, witDidGraspIntent() method will be called.
 * @throws IOException
 */
public void toggleListening() throws IOException
/**
 * Stream audio data from a InputStream to the Wit API.
 * Once the API response is received, witDidGraspIntent() method will be called.
 * @param audio The audio stream to send over to Wit.ai
 * @param encoding The encoding for this raw audio // Android usually uses 'signed-integer'
 * @param bits The bits of the audio // Android usually uses 16
 * @param rate The rate of the audio // Android usually uses 8000
 * @param order The byte order of the audio // Android usually uses LITTLE_ENDIAN
 */
public void streamRawAudio(InputStream audio, String encoding, int bits, int rate, ByteOrder order)
/**
 * Sends a String to wit.ai for interpretation. Same as sending a voice input, but with text.
 * @param text text to extract the meaning from.
 */
public void captureTextIntent(String text)
/**
 * Set the context for the next requests. Look at our http api documentation
 * to get more information about context (https://wit.ai/docs/http/20140923#context-link)
 * The reference_time property is automatically set by the SDK (if null)
 * The (GPS) location property is set by the SDK if it is enabled using the method
 * enableContextLocation (if null)
 *
 * @param context a JsonObject - here is an example of how to build it:
 *                        context.addProperty("timezone", "America/Los_Angeles");
 *                        OtherJsonObject = new JsonObject();
 *                        OtherJsonObject.addProperty("latitude", -35.23);
 *                        OtherJsonObject.addProperty("longitude", 59.10);
 *                        context.add("location", OtherJsonObject);
 */
public void setContext(JsonObject context)
/**
 * Enabling the context location will add the GPS coordinates to the _context object to all
 * Wit requests (speech and text requests).
 * This can help the Wit API to resolve some entities like the Location entity
 * @param androidContext android.context.Context needed to call the
 *                       android.location.LocationManager
 */
public void enableContextLocation(Context androidContext)
Implementing the IWitListener interface
public interface IWitListener {
  /**
   * Called when the Wit request is completed.
   * @param outcomes ArrayList of model.WitOutcome - null in case of error
   * @param messageId String containing the message id - null in case of error
   * @param error - Error, null if there is no error
   */
  void witDidGraspIntent(ArrayList<WitOutcome> outcomes,  String messageId, Error error);

  /**
   * Called when the streaming of the audio data to the Wit API starts.
   * The streaming to the Wit API starts right after calling one of the start methods when
   * detectSpeechStop is equal to Wit.vadConfig.disabled or Wit.vadConfig.detectSpeechStop.
   * If Wit.vad is equal to Wit.vadConfig.full, the streaming to the Wit API starts only when the SDK
   * detected a voice activity.
   */
  void witDidStartListening();

  /**
   * Called when Wit stop recording the audio input.
   */
  void witDidStopListening();

  /**
   * When using the hands free voice activity detection option (Wit.vadConfig.full), this callback will be called when the microphone started to listen
   * and is waiting to detect voice activity in order to start streaming the data to the Wit API.
   * This function will not be called if the Wit.vad is not equal to Wit.vadConfig.full
   */
  void witActivityDetectorStarted();

  /**
   * Using this function allow the developer to generate a custom message id.
   * Example: return "CUSTOM-ID" + UUID.randomUUID.toString();
   * If you want to let the Wit API generate the message id, you can just return null;
   * @return a unique (String) UUID or a null
   */
  String witGenerateMessageId();
}
From the microphone of the device

To start listening on the microphone, call the startListening() function on the Wit app:

_wit.startListening()

To stop listening on the microphone, you have two options:

  • Use the voice activity detection feature builtin in the SDK : _wit.detectSpeechStop = true;
  • Call the stop function: _wit.stopListening();

The function witDidGraspIntent will be called on the class implementing the IWitListener interface when the result is returned by the api.

From Text / String

To capture an intent from a string, call the _wit.captureTextIntent(String text) function.

String text = "Wake me up tomorrow at 7am";
_wit.captureTextIntent(text);

The function witDidGraspIntent will be called on the class implementing the IWitListener interface when the result is returned by the api.

From an audio stream

To capture an intent from an audio stream, call the streamRawAudio.

Here is the prototype of the function: streamRawAudio(InputStream audio, String encoding, int bits, int rate, ByteOrder order) and here is how the SDK use it internally to send the audio stream from the microphone:

PipedInputStream in = [...];
streamRawAudio(in, "signed-integer", 16, 16000, ByteOrder.LITTLE_ENDIAN);

The function witDidGraspIntent will be called on the class implementing the IWitListener interface when the result is returned by the api.

wit-android-sdk's People

Contributors

blandinw avatar lasryaric avatar martinraison avatar oliviervaussy avatar ricardotrindade avatar weirche avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.