<!doctype html>
<html lang="en" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
      
      
      <link rel="shortcut icon" href="../../../resources/images/alexa-favicon-02.png">
      <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.0.2">
    
    
      
        <title>Engine API - Amazon Wake Word Engine</title>
      
    
    
      <link rel="stylesheet" href="../../../assets/stylesheets/main.38780c08.min.css">
      
        
        <link rel="stylesheet" href="../../../assets/stylesheets/palette.3f72e892.min.css">
        
      
    
    
    
      
        
        <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
        <style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
      
    
    
    
      <link rel="stylesheet" href="../../../resources/stylesheets/extra.css">
    
    
      
    
    
  </head>
  
  
    
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="" data-md-color-accent="">
      
  
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#pryonlite-java-engine-api" class="md-skip">
          Skip to content
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
      <header class="md-header" data-md-component="header">
  <nav class="md-header-nav md-grid" aria-label="Header">
    <a href="../../.." title="Amazon Wake Word Engine" class="md-header-nav__button md-logo" aria-label="Amazon Wake Word Engine">
      
  <img src="../../../resources/images/logo-alexa-blue-ring.png" alt="logo">

    </a>
    <label class="md-header-nav__button md-icon" for="__drawer">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
    </label>
    <div class="md-header-nav__title" data-md-component="header-title">
      
        <div class="md-header-nav__ellipsis">
          <span class="md-header-nav__topic md-ellipsis">
            Amazon Wake Word Engine
          </span>
          <span class="md-header-nav__topic md-ellipsis">
            
              Engine API
            
          </span>
        </div>
      
    </div>
    
      <label class="md-header-nav__button md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
      </label>
      
<div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active">
      <label class="md-search__icon md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
      </label>
      <button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
      </button>
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            Initializing search
          </div>
          <ol class="md-search-result__list"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
  </nav>
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          

  

<nav class="md-tabs md-tabs--active" aria-label="Tabs" data-md-component="tabs">
  <div class="md-tabs__inner md-grid">
    <ul class="md-tabs__list">
      
        
  
  
    <li class="md-tabs__item">
      
        <a href="../../../index.html" class="md-tabs__link">
          Home
        </a>
      
    </li>
  

      
        
  
  
    
    
  
  
    <li class="md-tabs__item">
      
        <a href="../../../getting-started/api-samples/index.html" class="md-tabs__link">
          Getting Started
        </a>
      
    </li>
  

  

      
        
  
  
    
    
  
  
    <li class="md-tabs__item">
      
        <a href="../../../features/wakeword/overview.html" class="md-tabs__link">
          Features
        </a>
      
    </li>
  

  

      
        
  
  
    <li class="md-tabs__item">
      
        <a href="../../../avs-device-sdk/index.html" class="md-tabs__link">
          AVS Device SDK
        </a>
      
    </li>
  

      
        
  
  
    <li class="md-tabs__item">
      
        <a href="../../index.html" class="md-tabs__link md-tabs__link--active">
          API Reference
        </a>
      
    </li>
  

      
        
  
  
    <li class="md-tabs__item">
      
        <a href="../../../support/getting-help.html" class="md-tabs__link">
          Support
        </a>
      
    </li>
  

      
    </ul>
  </div>
</nav>
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="../../.." title="Amazon Wake Word Engine" class="md-nav__button md-logo" aria-label="Amazon Wake Word Engine">
      
  <img src="../../../resources/images/logo-alexa-blue-ring.png" alt="logo">

    </a>
    Amazon Wake Word Engine
  </label>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
      


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-1" type="checkbox" id="nav-1">
    
    <label class="md-nav__link" for="nav-1">
      Home
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Home" data-md-level="1">
      <label class="md-nav__title" for="nav-1">
        <span class="md-nav__icon md-icon"></span>
        Home
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../index.html" class="md-nav__link">
      Welcome
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../general-architecture.html" class="md-nav__link">
      General Architecture
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../api-versions-features.html" class="md-nav__link">
      API Versions & Features
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../wrappers-sdk-integrations.html" class="md-nav__link">
      Wrappers & SDK Integrations
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../supported-architectures.html" class="md-nav__link">
      Supported Architectures
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../release-history.html" class="md-nav__link">
      Release History
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

    
      
      
      


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2">
    
    <label class="md-nav__link" for="nav-2">
      Getting Started
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Getting Started" data-md-level="1">
      <label class="md-nav__title" for="nav-2">
        <span class="md-nav__icon md-icon"></span>
        Getting Started
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-2-1" type="checkbox" id="nav-2-1">
    
    <label class="md-nav__link" for="nav-2-1">
      API Usage Samples
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="API Usage Samples" data-md-level="2">
      <label class="md-nav__title" for="nav-2-1">
        <span class="md-nav__icon md-icon"></span>
        API Usage Samples
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../getting-started/api-samples/index.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../getting-started/api-samples/api-sample-v1.html" class="md-nav__link">
      API v1
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../getting-started/api-samples/api-sample-v2.html" class="md-nav__link">
      API v2
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../getting-started/release-contents/index.html" class="md-nav__link">
      Release Contents
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../getting-started/model-selection.html" class="md-nav__link">
      Model Selection
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../getting-started/filesim.html" class="md-nav__link">
      File Simulators
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

    
      
      
      


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
    
    <label class="md-nav__link" for="nav-3">
      Features
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Features" data-md-level="1">
      <label class="md-nav__title" for="nav-3">
        <span class="md-nav__icon md-icon"></span>
        Features
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-1" type="checkbox" id="nav-3-1">
    
    <label class="md-nav__link" for="nav-3-1">
      Wake Word
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Wake Word" data-md-level="2">
      <label class="md-nav__title" for="nav-3-1">
        <span class="md-nav__icon md-icon"></span>
        Wake Word
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/performance.html" class="md-nav__link">
      Wake Word Performance
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/detection-threshold.html" class="md-nav__link">
      Detection Threshold
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-1-4" type="checkbox" id="nav-3-1-4">
    
    <label class="md-nav__link" for="nav-3-1-4">
      Media Wake Suppression
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Media Wake Suppression" data-md-level="3">
      <label class="md-nav__title" for="nav-3-1-4">
        <span class="md-nav__icon md-icon"></span>
        Media Wake Suppression
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/media-wakes/media-wakes.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-1-4-2" type="checkbox" id="nav-3-1-4-2">
    
    <label class="md-nav__link" for="nav-3-1-4-2">
      Fingerprinting
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Fingerprinting" data-md-level="4">
      <label class="md-nav__title" for="nav-3-1-4-2">
        <span class="md-nav__icon md-icon"></span>
        Fingerprinting
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/media-wakes/fingerprinting/overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/media-wakes/fingerprinting/integration-guide.html" class="md-nav__link">
      Integration Guide
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-1-4-3" type="checkbox" id="nav-3-1-4-3">
    
    <label class="md-nav__link" for="nav-3-1-4-3">
      Watermarking
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Watermarking" data-md-level="4">
      <label class="md-nav__title" for="nav-3-1-4-3">
        <span class="md-nav__icon md-icon"></span>
        Watermarking
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/media-wakes/watermarking/overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/media-wakes/watermarking/integration.html" class="md-nav__link">
      Integration Guide
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/self-wake/self-wake-overview.html" class="md-nav__link">
      Self-Wake Suppression
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-1-6" type="checkbox" id="nav-3-1-6">
    
    <label class="md-nav__link" for="nav-3-1-6">
      Pre-roll
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Pre-roll" data-md-level="3">
      <label class="md-nav__title" for="nav-3-1-6">
        <span class="md-nav__icon md-icon"></span>
        Pre-roll
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/preroll/preroll-overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/preroll/preroll-integration-guide.html" class="md-nav__link">
      Integration Guide
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/cascade-mode.html" class="md-nav__link">
      Cascade Mode
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wakeword/client-properties.html" class="md-nav__link">
      Client Properties
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-2" type="checkbox" id="nav-3-2">
    
    <label class="md-nav__link" for="nav-3-2">
      Diagnostic Information (WWDI)
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Diagnostic Information (WWDI)" data-md-level="2">
      <label class="md-nav__title" for="nav-3-2">
        <span class="md-nav__icon md-icon"></span>
        Diagnostic Information (WWDI)
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wwdi/overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/wwdi/integration-guide.html" class="md-nav__link">
      Integration Guide
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-3" type="checkbox" id="nav-3-3">
    
    <label class="md-nav__link" for="nav-3-3">
      Standalone Voice Activity Detection (VAD)
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Standalone Voice Activity Detection (VAD)" data-md-level="2">
      <label class="md-nav__title" for="nav-3-3">
        <span class="md-nav__icon md-icon"></span>
        Standalone Voice Activity Detection (VAD)
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/vad/overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-3-2" type="checkbox" id="nav-3-3-2">
    
    <label class="md-nav__link" for="nav-3-3-2">
      Energy Detection
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Energy Detection" data-md-level="3">
      <label class="md-nav__title" for="nav-3-3-2">
        <span class="md-nav__icon md-icon"></span>
        Energy Detection
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/vad/energydetection/overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/vad/energydetection/integration-guide.html" class="md-nav__link">
      Integration Guide
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-3-4" type="checkbox" id="nav-3-4">
    
    <label class="md-nav__link" for="nav-3-4">
      Device Artifact Vending Service (DAVS)
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Device Artifact Vending Service (DAVS)" data-md-level="2">
      <label class="md-nav__title" for="nav-3-4">
        <span class="md-nav__icon md-icon"></span>
        Device Artifact Vending Service (DAVS)
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/davs/overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/davs/integration-guide.html" class="md-nav__link">
      Integration Guide
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../features/davs/davs-filters.html" class="md-nav__link">
      DAVS filters in wakeword engine package
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
      </ul>
    </nav>
  </li>

    
      
      
      


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
    
    <label class="md-nav__link" for="nav-4">
      AVS Device SDK
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="AVS Device SDK" data-md-level="1">
      <label class="md-nav__title" for="nav-4">
        <span class="md-nav__icon md-icon"></span>
        AVS Device SDK
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../avs-device-sdk/index.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../avs-device-sdk/integration-guide.html" class="md-nav__link">
      Integration Guide
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

    
      
      
      

  


  <li class="md-nav__item md-nav__item--active md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5" checked>
    
    <label class="md-nav__link" for="nav-5">
      API Reference
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="API Reference" data-md-level="1">
      <label class="md-nav__title" for="nav-5">
        <span class="md-nav__icon md-icon"></span>
        API Reference
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../index.html" class="md-nav__link">
      API Reference
    </a>
  </li>

        
          
          
          

  


  <li class="md-nav__item md-nav__item--active md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-5-2" type="checkbox" id="nav-5-2" checked>
    
    <label class="md-nav__link" for="nav-5-2">
      Wrappers
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Wrappers" data-md-level="2">
      <label class="md-nav__title" for="nav-5-2">
        <span class="md-nav__icon md-icon"></span>
        Wrappers
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          

  


  <li class="md-nav__item md-nav__item--active md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-5-2-1" type="checkbox" id="nav-5-2-1" checked>
    
    <label class="md-nav__link" for="nav-5-2-1">
      Java
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Java" data-md-level="3">
      <label class="md-nav__title" for="nav-5-2-1">
        <span class="md-nav__icon md-icon"></span>
        Java
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="java-binding-overview.html" class="md-nav__link">
      Overview
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="java-binding-reference.html" class="md-nav__link">
      Reference
    </a>
  </li>

        
          
          
          

  


  <li class="md-nav__item md-nav__item--active">
    
    <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
    
      
    
    
      <label class="md-nav__link md-nav__link--active" for="__toc">
        Engine API
        <span class="md-nav__icon md-icon"></span>
      </label>
    
    <a href="java-binding-engine-reference.html" class="md-nav__link md-nav__link--active">
      Engine API
    </a>
    
      
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#1-engine-configuration" class="md-nav__link">
    1. Engine Configuration
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#2-engine-attributes" class="md-nav__link">
    2. Engine Attributes
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#3-engine-commands" class="md-nav__link">
    3. Engine Commands
  </a>
  
    <nav class="md-nav" aria-label="3. Engine Commands">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#31-engine-object-creation" class="md-nav__link">
    3.1 Engine Object Creation
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#32-engine-attribute-query" class="md-nav__link">
    3.2 Engine Attribute Query
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#33-engine-object-initialization" class="md-nav__link">
    3.3 Engine Object Initialization
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#34-pushing-audio-to-the-engine" class="md-nav__link">
    3.4 Pushing Audio to the Engine
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#35-engine-object-destruction" class="md-nav__link">
    3.5 Engine Object Destruction
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#36-retrieval-of-audio-frame-size" class="md-nav__link">
    3.6 Retrieval of Audio Frame Size
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#37-querying-engine-object-initialization-status" class="md-nav__link">
    3.7 Querying Engine Object Initialization Status
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#4-engine-events" class="md-nav__link">
    4. Engine Events
  </a>
  
    <nav class="md-nav" aria-label="4. Engine Events">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#41-error-reporting" class="md-nav__link">
    4.1 Error Reporting
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
    
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="java-binding-wake-word-reference.html" class="md-nav__link">
      Wake Word API
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="java-binding-fingerprinting-reference.html" class="md-nav__link">
      Fingerprinting API
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../swift/index.html" class="md-nav__link">
      Swift
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
      </ul>
    </nav>
  </li>

    
      
      
      


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-nav__toggle md-toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6">
    
    <label class="md-nav__link" for="nav-6">
      Support
      <span class="md-nav__icon md-icon"></span>
    </label>
    <nav class="md-nav" aria-label="Support" data-md-level="1">
      <label class="md-nav__title" for="nav-6">
        <span class="md-nav__icon md-icon"></span>
        Support
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../../../support/getting-help.html" class="md-nav__link">
      Getting Help
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../../../support/faq/index.html" class="md-nav__link">
      FAQ
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#1-engine-configuration" class="md-nav__link">
    1. Engine Configuration
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#2-engine-attributes" class="md-nav__link">
    2. Engine Attributes
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#3-engine-commands" class="md-nav__link">
    3. Engine Commands
  </a>
  
    <nav class="md-nav" aria-label="3. Engine Commands">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#31-engine-object-creation" class="md-nav__link">
    3.1 Engine Object Creation
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#32-engine-attribute-query" class="md-nav__link">
    3.2 Engine Attribute Query
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#33-engine-object-initialization" class="md-nav__link">
    3.3 Engine Object Initialization
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#34-pushing-audio-to-the-engine" class="md-nav__link">
    3.4 Pushing Audio to the Engine
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#35-engine-object-destruction" class="md-nav__link">
    3.5 Engine Object Destruction
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#36-retrieval-of-audio-frame-size" class="md-nav__link">
    3.6 Retrieval of Audio Frame Size
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#37-querying-engine-object-initialization-status" class="md-nav__link">
    3.7 Querying Engine Object Initialization Status
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#4-engine-events" class="md-nav__link">
    4. Engine Events
  </a>
  
    <nav class="md-nav" aria-label="4. Engine Events">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#41-error-reporting" class="md-nav__link">
    4.1 Error Reporting
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          <div class="md-content">
            <article class="md-content__inner md-typeset">
              
                
                
                <h1 id="pryonlite-java-engine-api">PryonLite Java Engine API</h1>
<p>At its core, one creates a PryonLite engine by instanciating and initializing a PryonLite5000 java object. Event handlers are registered on object creation prior to initialization.</p>
<h2 id="1-engine-configuration">1. Engine Configuration</h2>
<p>Prior to engine use, you must prepare a PryonLite5000.Config structure with object configuration parameters, consisting of the following:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Configuration parameters for attribute query and instance initialization.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">Config</span> <span class="p">{</span>
    <span class="c1">// Wake Word</span>
    <span class="cm">/**</span>
<span class="cm">     * Wake Word model binary.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">wakewordModel</span><span class="p">;</span>
    <span class="cm">/**</span>
<span class="cm">     * Wake Word detection threshold.  Integer in range [1, 1000].</span>
<span class="cm">     * Recommended value is 500.</span>
<span class="cm">     * 1 = most permissive threshold, most detections.</span>
<span class="cm">     * 1000 = least permissive threshold, fewest detections.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">detectThreshold</span><span class="p">;</span>
    <span class="cm">/**</span>
<span class="cm">     * Flag for enabling voice activity detector pre-stage.</span>
<span class="cm">     * For most application-core integrations, this should be set to false.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">boolean</span> <span class="n">useVad</span><span class="p">;</span>
    <span class="cm">/**</span>
<span class="cm">     * Flag for enabling low-latency detection mode.</span>
<span class="cm">     * Only valid for type &#39;U&#39; models. Results in ~200ms lower detection</span>
<span class="cm">     * latency, at the cost of less accurate ww end index reporting.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">boolean</span> <span class="n">lowLatency</span><span class="p">;</span>

    <span class="c1">// Fingerprint (Media-induced wake suppression)</span>
    <span class="cm">/**</span>
<span class="cm">     * Binary containing media-derived reference fingerprints for matching and suppression.</span>
<span class="cm">     * This may be set to null to disable fingerprint-matching-based suppression.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">fingerprintList</span><span class="p">;</span>

    <span class="c1">// Speaker Verification</span>
    <span class="cm">/**</span>
<span class="cm">     * Speaker Verification model binary.</span>
<span class="cm">     * This may be set to null to disable speaker verification functionality.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">speakerVerificationModel</span><span class="p">;</span>
    <span class="cm">/**</span>
<span class="cm">     * Number of enrollment examples required to generate a Speaker Verification profile.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">numEnrollmentExamples</span><span class="p">;</span>
    <span class="cm">/**</span>
<span class="cm">     * Minimum dB value for average SNR to accept wake word eample for enrollment.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">minEnrollmentSnr</span><span class="p">;</span>
    <span class="cm">/**</span>
<span class="cm">     * Maximum number of Speaker Verification profiles that can be simultaneously loaded.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">maxLoadableProfiles</span><span class="p">;</span>
    <span class="cm">/**</span>
<span class="cm">     * Maximum size of Profile ID used for enrollment; must be a multiple of 4.</span>
<span class="cm">     */</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">maxProfileIdSize</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
We can see above that for PRL5000, we have three distinct sections for Wake Word, Fingerprinting, and Speaker Verification.</p>
<h2 id="2-engine-attributes">2. Engine Attributes</h2>
<p>Attributes for the configuration structure can be retrieved via a <code>getAttributes()</code> method, and consist of the following:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Attributes associated with a specified PryonLite configuration.</span>
<span class="cm"> *</span>
<span class="cm"> * @note Class not marked as static, as it causes JNI GetMethodID for the constructor to fail.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Attributes</span> <span class="p">{</span>
    <span class="kd">public</span> <span class="n">String</span> <span class="n">engineVersion</span><span class="p">;</span> <span class="c1">///&lt; PryonLite engine version.</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">maxMetadataBlobSize</span><span class="p">;</span> <span class="c1">///&lt; Maximum size of metadata blob returned with wake word detection result.</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">requiredMem</span><span class="p">;</span> <span class="c1">///&lt; Memory in bytes required by an engine instance using this configuration.</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">samplesPerFrame</span><span class="p">;</span> <span class="c1">///&lt; Samples per frame for PushAudio</span>

    <span class="c1">// Wake Word</span>
    <span class="kd">public</span> <span class="n">String</span> <span class="n">wakewordApiVersion</span><span class="p">;</span> <span class="c1">///&lt; Wake Word API version</span>
    <span class="kd">public</span> <span class="n">String</span> <span class="n">wakewordConfigVersion</span><span class="p">;</span> <span class="c1">///&lt; Wake Word configuration version (wakeword model)</span>

    <span class="c1">// Fingerprint</span>
    <span class="kd">public</span> <span class="n">String</span> <span class="n">fingerprintApiVersion</span><span class="p">;</span> <span class="c1">///&lt; Fingerprint API version</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">fingerprintListVersion</span><span class="p">;</span> <span class="c1">///&lt; Fingerprint List Version</span>

    <span class="c1">// Speaker Verification</span>
    <span class="kd">public</span> <span class="n">String</span> <span class="n">speakerVerificationApiVersion</span><span class="p">;</span> <span class="c1">///&lt; Speaker Verification API version</span>
    <span class="kd">public</span> <span class="n">String</span> <span class="n">speakerVerificationConfigVersion</span><span class="p">;</span> <span class="c1">///&lt; Speaker Verification configuration version (the model)</span>
    <span class="kd">public</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">speakerVerificationModelId</span><span class="p">;</span> <span class="c1">///&lt; Speaker Verification Model ID</span>
    <span class="kd">public</span> <span class="kt">int</span> <span class="n">speakerVerificationMaxProfileSize</span><span class="p">;</span> <span class="c1">///&lt; Speaker Verification maximum profile size</span>
    <span class="kd">public</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">speakerVerificationKeywords</span><span class="p">;</span> <span class="c1">///&lt; List of keywords supported by Speaker Verification Model.</span>
    <span class="kd">public</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">speakerVerificationLocales</span><span class="p">;</span> <span class="c1">///&lt; List of locales supported by Speaker Verification Model.</span>
<span class="p">}</span>
</code></pre></div>
We can see again that fields are grouped by functionality into sections for wake word, fingerprinting, and speaker verification.</p>
<p>The following are some of the attributes associated with the engine as a whole (and not tied to specific features like the wake word detector, fingerprinting, or speaker verification).
<div class="highlight"><pre><span></span><code><span class="kd">public</span> <span class="n">String</span> <span class="n">engineVersion</span><span class="p">;</span> <span class="c1">///&lt; PryonLite engine version.</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="n">maxMetadataBlobSize</span><span class="p">;</span> <span class="c1">///&lt; Maximum size of metadata blob returned with wake word detection result.</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="n">requiredMem</span><span class="p">;</span> <span class="c1">///&lt; Memory in bytes required by an engine instance using this configuration.</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="n">samplesPerFrame</span><span class="p">;</span> <span class="c1">///&lt; Samples per frame for PushAudio</span>
</code></pre></div></p>
<h2 id="3-engine-commands">3. Engine Commands</h2>
<h3 id="31-engine-object-creation">3.1 Engine Object Creation</h3>
<p>A PryonLite Java object can be created with the following constructor - note that there are additional steps needed to initialize the engine so that it can process audio streams.
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Constructor for the PryonLite engine.</span>
<span class="cm"> *</span>
<span class="cm"> * @param callbacks The callbacks to register for event notifications.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="nf">PryonLite5000</span><span class="p">(</span><span class="kd">final</span> <span class="n">Callbacks</span> <span class="n">callbacks</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">this</span><span class="p">.</span><span class="na">callbacks</span> <span class="o">=</span> <span class="n">callbacks</span><span class="p">;</span>
    <span class="k">this</span><span class="p">.</span><span class="na">nativeMem</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
This creates the environment in which attribute query, initialization, and all further interactions with the engine may proceed.</p>
<h4 id="callbacks">Callbacks</h4>
<p>The callbacks that must be registered with the PryonLite engine instance on object creation are as follows:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Set of callbacks for handling event from the PryonLite object.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">interface</span> <span class="nc">Callbacks</span> <span class="p">{</span>
    <span class="cm">/**</span>
<span class="cm">     * Function signature of event handler for wake word detection events.</span>
<span class="cm">     *</span>
<span class="cm">     * @param wakeWord [in] The detected wake word.</span>
<span class="cm">     * @param beginSampleIndex [in] The first sample of the wake word, relative to the last sample pushed.</span>
<span class="cm">     * @param endSampleIndex [in]  The last sample of the wake word, relative to the last sample pushed.</span>
<span class="cm">     * @param metadata [in] Wake Word Engine Metadata associated with wake word event.</span>
<span class="cm">     */</span>
    <span class="kt">void</span> <span class="nf">wakeWordDetected</span><span class="p">(</span><span class="kd">final</span> <span class="n">String</span> <span class="n">wakeWord</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">long</span> <span class="n">beginSampleIndex</span><span class="p">,</span>
                          <span class="kd">final</span> <span class="kt">long</span> <span class="n">endSampleIndex</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">metadata</span><span class="p">);</span>

    <span class="cm">/**</span>
<span class="cm">     * Function signature of event handler for voice activity detection (VAD) state changes.</span>
<span class="cm">     *</span>
<span class="cm">     * @param state - new VAD state.</span>
<span class="cm">     */</span>
    <span class="kt">void</span> <span class="nf">vadStateChanged</span><span class="p">(</span><span class="kd">final</span> <span class="kt">int</span> <span class="n">state</span><span class="p">);</span>

    <span class="cm">/**</span>
<span class="cm">     * Function signature of event handler for serious errors encountered during execution</span>
<span class="cm">     * of native methods where the error cannot be returned through the method&#39;s return value.</span>
<span class="cm">     * This would generally be used in a context leading up to the invocation of another event</span>
<span class="cm">     * handler in the Callbacks interface, like wakeWordDetected().</span>
<span class="cm">     *</span>
<span class="cm">     * @param errorCode [in] Internal code, consult vendor.</span>
<span class="cm">     */</span>
    <span class="kt">void</span> <span class="nf">errorEvent</span><span class="p">(</span><span class="kd">final</span> <span class="kt">int</span> <span class="n">errorCode</span><span class="p">);</span>

    <span class="cm">/**</span>
<span class="cm">     * Function signature of event handler for Speaker Verification enrollment events.</span>
<span class="cm">     *</span>
<span class="cm">     * @param profileId [in] Profile ID associated with the enrollment session.</span>
<span class="cm">     * @param notification [in] The type of notification (example accepted, example rejected, profile generated)</span>
<span class="cm">     * @param profile [in] If not null, the voice profile blob generated by an enrollment session.</span>
<span class="cm">     * @param metadata [in] speaker verification enrollment event metadata blob.</span>
<span class="cm">     */</span>
    <span class="kt">void</span> <span class="nf">speakerVerificationEnrollmentEvent</span><span class="p">(</span><span class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">profileId</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">notification</span><span class="p">,</span>
                                            <span class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">profile</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">metadata</span><span class="p">);</span>

    <span class="cm">/**</span>
<span class="cm">     * Function signature of event handler for Speaker Verification classification events.</span>
<span class="cm">     *</span>
<span class="cm">     * @param profileId [in] Profile ID associated with the event.</span>
<span class="cm">     * @param score [in] The classification score.</span>
<span class="cm">     * @param metadata [in] speaker verification classification event metadata blob.</span>
<span class="cm">     */</span>
    <span class="kt">void</span> <span class="nf">speakerVerificationClassificationEvent</span><span class="p">(</span><span class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">profileId</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">score</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">metadata</span><span class="p">);</span>

    <span class="cm">/**</span>
<span class="cm">     * Function signature of event handler for Speaker Verification enrollment example capture events.</span>
<span class="cm">     *</span>
<span class="cm">     * @param wakeWord [in] The detected wake word.</span>
<span class="cm">     * @param startIndexInSamples [in] Index of the first sample of the wake word, relative to the start</span>
<span class="cm">     * of the wake word example buffer.</span>
<span class="cm">     * @param endIndexInSamples [in] Index of the last sample of the wake word, relative to the start of the</span>
<span class="cm">     * wake word example buffer.</span>
<span class="cm">     * @param example [in] The wake word example audio buffer.</span>
<span class="cm">     * @param metadata [in] Wake Word detection metadata associated with the wake word example.</span>
<span class="cm">     */</span>
    <span class="kt">void</span> <span class="nf">speakerVerificationWakewordExampleEvent</span><span class="p">(</span><span class="kd">final</span> <span class="n">String</span> <span class="n">wakeWord</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">startIndexInSamples</span><span class="p">,</span>
                                                 <span class="kd">final</span> <span class="kt">int</span> <span class="n">endIndexInSamples</span><span class="p">,</span> <span class="kd">final</span> <span class="kt">short</span><span class="o">[]</span> <span class="n">example</span><span class="p">,</span>
                                                 <span class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">metadata</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div>
Aside from the errorEvent callback, the remaining callbacks are associated with functionalities like wake word, and speaker verification.</p>
<h3 id="32-engine-attribute-query">3.2 Engine Attribute Query</h3>
<p>Attributes for a particular engine configuration can be requested by calling the following:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Query attributes associated with a given PryonLite configuration.</span>
<span class="cm"> *</span>
<span class="cm"> * @param config [in] Input configuration parameters.</span>
<span class="cm"> * @return Attributes if successful; NULL otherwise.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="n">Attributes</span> <span class="nf">getAttributes</span><span class="p">(</span><span class="kd">final</span> <span class="n">Config</span> <span class="n">config</span><span class="p">);</span>
</code></pre></div>
Note that attributes for a particular set of configuration parameters may and should be retrieved prior to initialization, to retrieve attributes relevant to the engine while it is in use.
The <code>getAttributes()</code> may also be called after engine initialization, as it is one of the few methods that is not marked with the <code>synchronized</code> keyword.</p>
<h3 id="33-engine-object-initialization">3.3 Engine Object Initialization</h3>
<p>PryonLite engine initialization is through the following method:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Initializes the PryonLite instance.</span>
<span class="cm"> *</span>
<span class="cm"> * @param config [in] Input configuration parameters.</span>
<span class="cm"> * @return Zero if successful, non-zero error code otherwise.</span>
<span class="cm"> * @note Here is a list of error codes for this function and their meanings.</span>
<span class="cm"> *   0: Success, nominal operation.</span>
<span class="cm"> *  -1: Config parameter is invalid.</span>
<span class="cm"> *  -2: The object has already been initialized.</span>
<span class="cm"> *  -3: JNI memory allocation for the instance failed.</span>
<span class="cm"> *  -4: A global reference could not be created for the object.</span>
<span class="cm"> *  -5: Query of class properties failed.</span>
<span class="cm"> *  -6: Import of Java config parameters failed. (DEPRECATED)</span>
<span class="cm"> *  -7: Native memory allocation for the instance failed.</span>
<span class="cm"> *  -8: Audio buffer allocation for the instance failed.</span>
<span class="cm"> *  -9: Saving of JNI memory pointer to object failed.</span>
<span class="cm"> *  -10: Speaker Verification voice profile memory allocation failed.</span>
<span class="cm"> * All other values:  Internal code, consult vendor.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">int</span> <span class="nf">initialize</span><span class="p">(</span><span class="kd">final</span> <span class="n">Config</span> <span class="n">config</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="34-pushing-audio-to-the-engine">3.4 Pushing Audio to the Engine</h3>
<p>Audio buffers are streamed to the PryonLite engine by repeatedly calling the following function:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Pushes a frame of audio data to the PryonLite instance.</span>
<span class="cm"> *</span>
<span class="cm"> * @param samples [in] Audio frame from input audio stream.</span>
<span class="cm"> * @return Zero if successful, non-zero error code otherwise.</span>
<span class="cm"> * @note This function should be invoked only after initialize() has been called,</span>
<span class="cm"> * and should not be invoked after a destroy().</span>
<span class="cm"> * @note Here is a list of error codes for this function and their meanings.</span>
<span class="cm"> *   0: Success, nominal operation.</span>
<span class="cm"> *  -32: The object has not been initialized.</span>
<span class="cm"> *  -33: Input sample array is null.</span>
<span class="cm"> *  -34: Length of input sample array is invalid.</span>
<span class="cm"> *  -35: Retrieval of the input sample array failed.</span>
<span class="cm"> *  -36: The object passed into pushAudio() does not match the object initialized.</span>
<span class="cm"> * All other values:  Internal code, consult vendor.</span>
<span class="cm"> * @note This method does not Log.i as part of nominal operation, both due to its invocation</span>
<span class="cm"> * frequency/regularity, and to respect the high priority context within which it is typically</span>
<span class="cm"> * invoked.  If you have use cases where you are invoking pushAudio irregularly, and need to</span>
<span class="cm"> * understand the timing of such invocations, you are free to add a log statement in the calling code.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">int</span> <span class="nf">pushAudio</span><span class="p">(</span><span class="kd">final</span> <span class="kt">short</span><span class="o">[]</span> <span class="n">samples</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="35-engine-object-destruction">3.5 Engine Object Destruction</h3>
<p>Prior to deleting the PryonLite5000 Java object, any engine initialization <strong><em>MUST</em></strong> be mirrored by a call to this method.
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Release PryonLite instance.</span>
<span class="cm"> *</span>
<span class="cm"> * @return Zero if successful, non-zero error code otherwise.</span>
<span class="cm"> * @note Here is a list of error codes for this function and their meanings.</span>
<span class="cm"> *   0: Success, nominal operation.</span>
<span class="cm"> *  -31: The object has not been initialized.</span>
<span class="cm"> * All other values:  Internal code, consult vendor.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">int</span> <span class="nf">destroy</span><span class="p">();</span>
</code></pre></div></p>
<h3 id="36-retrieval-of-audio-frame-size">3.6 Retrieval of Audio Frame Size</h3>
<p>The following function is redundant, as samples per frame is returned as an attribute. However, it has been maintained for backwards compatibility. Future versions of this Java binding may deprecate this method.
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Returns the number of samples per frame for audio pushes.</span>
<span class="cm"> *</span>
<span class="cm"> * @return Samples per frame for audio pushes, &lt;= 0 on error.</span>
<span class="cm"> * @note This value must be used when subsequent calls to pushAudio() are made.</span>
<span class="cm"> * @note This function should be invoked only after initialize() has been called,</span>
<span class="cm"> * and should not be invoked after a destroy().</span>
<span class="cm"> * @note Also returned as part of attribute query, which can be invoked prior to</span>
<span class="cm"> * initializing a PryonLite object.</span>
<span class="cm"> * @note Here is a list of error codes for this function and their meanings.</span>
<span class="cm"> *   0: This code is not used and reserved for future use.</span>
<span class="cm"> *  -37: The object has not been initialized.</span>
<span class="cm"> * All other values:  Internal code, consult vendor.</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">int</span> <span class="nf">getSamplesPerFrame</span><span class="p">();</span>
</code></pre></div>
We can see from the comments above that the scope of validity for invocation of the <code>getSamplesPerFrame()</code> method is more limited than that of <code>getAttributes()</code>.</p>
<h3 id="37-querying-engine-object-initialization-status">3.7 Querying Engine Object Initialization Status</h3>
<p>The following convenience function allows the PryonLite Java client to check if a given object has been initialized or not:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Checks if the instance has been initialized.</span>
<span class="cm"> *</span>
<span class="cm"> * @return 1 if initialized, 0 if not initialized</span>
<span class="cm"> */</span>
<span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">int</span> <span class="nf">isInitialized</span><span class="p">();</span>
</code></pre></div></p>
<h2 id="4-engine-events">4. Engine Events</h2>
<h3 id="41-error-reporting">4.1 Error Reporting</h3>
<p>Errors that are not easily returned through a command's return code are returned via the following callback:
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Function signature of event handler for serious errors encountered during execution</span>
<span class="cm"> * of native methods where the error cannot be returned through the method&#39;s return value.</span>
<span class="cm"> * This would generally be used in a context leading up to the invocation of another event</span>
<span class="cm"> * handler in the Callbacks interface, like wakeWordDetected().</span>
<span class="cm"> *</span>
<span class="cm"> * @param errorCode [in] Internal code, consult vendor.</span>
<span class="cm"> */</span>
<span class="kt">void</span> <span class="nf">errorEvent</span><span class="p">(</span><span class="kd">final</span> <span class="kt">int</span> <span class="n">errorCode</span><span class="p">);</span>
</code></pre></div></p>
                
              
              
                


              
            </article>
          </div>
        </div>
      </main>
      
        
<footer class="md-footer">
  
    <div class="md-footer-nav">
      <nav class="md-footer-nav__inner md-grid" aria-label="Footer">
        
          <a href="java-binding-reference.html" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
            <div class="md-footer-nav__button md-icon">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
            </div>
            <div class="md-footer-nav__title">
              <div class="md-ellipsis">
                <span class="md-footer-nav__direction">
                  Previous
                </span>
                Reference
              </div>
            </div>
          </a>
        
        
          <a href="java-binding-wake-word-reference.html" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
            <div class="md-footer-nav__title">
              <div class="md-ellipsis">
                <span class="md-footer-nav__direction">
                  Next
                </span>
                Wake Word API
              </div>
            </div>
            <div class="md-footer-nav__button md-icon">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
            </div>
          </a>
        
      </nav>
    </div>
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-footer-copyright">
        
          <div class="md-footer-copyright__highlight">
            AMAZON CONFIDENTIAL. Copyright &copy; 2021 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
          </div>
        
        Made with
        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
          Material for MkDocs
        </a>
      </div>
      
    </div>
  </div>
</footer>
      
    </div>
    
      <script src="../../../assets/javascripts/vendor.77e55a48.min.js"></script>
      <script src="../../../assets/javascripts/bundle.9554a270.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
      

<script src="https://unpkg.com/iframe-worker/polyfill"></script>
<script src="../../../search/search_index.js"></script>


      <script>
        app = initialize({
          base: "../../..",
          features: ['navigation.tabs', 'navigation.expand'],
          search: Object.assign({
            worker: "../../../assets/javascripts/worker/search.4ac00218.min.js"
          }, typeof search !== "undefined" && search)
        })
      </script>
      
        <script src="../../../resources/javascripts/MathJax.min.js"></script>
      
    
  </body>
</html>