From 8cae6fc84444da97cf487e22d2e243dea00d527f Mon Sep 17 00:00:00 2001 From: Eric Mikulin Date: Tue, 14 Feb 2023 12:58:29 -0800 Subject: [PATCH] v1.0 android (#8) --- .github/workflows/android-appcenter.yml | 68 ++++ .github/workflows/android-perf.yml | 83 ++++ README.md | 46 ++- binding/android/.gitignore | 12 + binding/android/README.md | 80 ++++ binding/android/build.gradle | 25 ++ binding/android/gradle.properties | 17 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + binding/android/gradlew | 172 ++++++++ binding/android/gradlew.bat | 84 ++++ binding/android/koala/.gitignore | 3 + binding/android/koala/build.gradle | 53 +++ binding/android/koala/consumer-rules.pro | 1 + binding/android/koala/proguard-rules.pro | 1 + .../koala/src/main/AndroidManifest.xml | 3 + .../main/java/ai/picovoice/koala/Koala.java | 221 ++++++++++ .../java/ai/picovoice/koala/KoalaNative.java | 33 ++ .../exception/KoalaActivationException.java | 22 + .../KoalaActivationLimitException.java | 22 + .../KoalaActivationRefusedException.java | 22 + .../KoalaActivationThrottledException.java | 22 + .../koala/exception/KoalaException.java | 22 + .../koala/exception/KoalaIOException.java | 22 + .../KoalaInvalidArgumentException.java | 22 + .../exception/KoalaInvalidStateException.java | 22 + .../koala/exception/KoalaKeyException.java | 22 + .../koala/exception/KoalaMemoryException.java | 22 + .../exception/KoalaRuntimeException.java | 22 + .../KoalaStopIterationException.java | 22 + binding/android/settings.gradle | 2 + demo/android/.gitignore | 18 + demo/android/Activity/.gitignore | 10 + demo/android/Activity/README.md | 22 + demo/android/Activity/build.gradle | 28 ++ demo/android/Activity/copy_test_resources.sh | 9 + demo/android/Activity/gradle.properties | 17 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + demo/android/Activity/gradlew | 172 ++++++++ demo/android/Activity/gradlew.bat | 84 ++++ .../koala-activity-demo-app/.gitignore | 1 + .../koala-activity-demo-app/build.gradle | 78 ++++ .../proguard-rules.pro | 21 + .../koalaactivitydemo/KoalaTest.java | 221 ++++++++++ .../koalaactivitydemo/PerformanceTest.java | 147 +++++++ .../src/main/AndroidManifest.xml | 27 ++ .../src/main/ic_launcher-playstore.png | Bin 0 -> 27403 bytes .../koalaactivitydemo/MainActivity.java | 384 ++++++++++++++++++ .../main/res/drawable/button_background.xml | 5 + .../src/main/res/drawable/button_disabled.xml | 5 + .../src/main/res/drawable/error_view.xml | 5 + .../res/drawable/ic_launcher_background.xml | 10 + .../res/drawable/ic_launcher_foreground.xml | 19 + .../main/res/layout/koala_activity_demo.xml | 149 +++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2461 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3734 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1604 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2276 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3286 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5248 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 5062 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 8440 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 7021 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 12022 bytes .../src/main/res/values/attrs.xml | 13 + .../src/main/res/values/colors.xml | 7 + .../src/main/res/values/strings.xml | 6 + .../src/main/res/values/styles.xml | 10 + demo/android/Activity/settings.gradle | 2 + demo/android/README.md | 13 + lib/android/arm64-v8a/libpv_koala.so | Bin 263696 -> 268224 bytes lib/android/armeabi-v7a/libpv_koala.so | Bin 179332 -> 182772 bytes lib/android/x86/libpv_koala.so | Bin 253640 -> 257960 bytes lib/android/x86_64/libpv_koala.so | Bin 285264 -> 289600 bytes resources/lint/spell-check/.cspell.json | 16 +- resources/lint/spell-check/dict.txt | 10 +- 79 files changed, 2694 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/android-appcenter.yml create mode 100644 .github/workflows/android-perf.yml create mode 100644 binding/android/.gitignore create mode 100644 binding/android/README.md create mode 100644 binding/android/build.gradle create mode 100644 binding/android/gradle.properties create mode 100644 binding/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 binding/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 binding/android/gradlew create mode 100644 binding/android/gradlew.bat create mode 100644 binding/android/koala/.gitignore create mode 100644 binding/android/koala/build.gradle create mode 100644 binding/android/koala/consumer-rules.pro create mode 100644 binding/android/koala/proguard-rules.pro create mode 100644 binding/android/koala/src/main/AndroidManifest.xml create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/Koala.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/KoalaNative.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationLimitException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationRefusedException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationThrottledException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaIOException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidArgumentException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidStateException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaKeyException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaMemoryException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaRuntimeException.java create mode 100644 binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaStopIterationException.java create mode 100644 binding/android/settings.gradle create mode 100644 demo/android/.gitignore create mode 100644 demo/android/Activity/.gitignore create mode 100644 demo/android/Activity/README.md create mode 100644 demo/android/Activity/build.gradle create mode 100755 demo/android/Activity/copy_test_resources.sh create mode 100644 demo/android/Activity/gradle.properties create mode 100644 demo/android/Activity/gradle/wrapper/gradle-wrapper.jar create mode 100644 demo/android/Activity/gradle/wrapper/gradle-wrapper.properties create mode 100755 demo/android/Activity/gradlew create mode 100644 demo/android/Activity/gradlew.bat create mode 100644 demo/android/Activity/koala-activity-demo-app/.gitignore create mode 100644 demo/android/Activity/koala-activity-demo-app/build.gradle create mode 100644 demo/android/Activity/koala-activity-demo-app/proguard-rules.pro create mode 100644 demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/KoalaTest.java create mode 100644 demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/PerformanceTest.java create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/AndroidManifest.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/ic_launcher-playstore.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/java/ai/picovoice/koalaactivitydemo/MainActivity.java create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_background.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_disabled.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/error_view.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/layout/koala_activity_demo.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/values/attrs.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/values/colors.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/values/strings.xml create mode 100644 demo/android/Activity/koala-activity-demo-app/src/main/res/values/styles.xml create mode 100644 demo/android/Activity/settings.gradle create mode 100644 demo/android/README.md diff --git a/.github/workflows/android-appcenter.yml b/.github/workflows/android-appcenter.yml new file mode 100644 index 0000000..4ef6f94 --- /dev/null +++ b/.github/workflows/android-appcenter.yml @@ -0,0 +1,68 @@ +name: Android AppCenter Tests + +on: + workflow_dispatch: + push: + branches: [ main ] + paths: + - '.github/workflows/android-appcenter.yml' + - 'demo/android/Activity/**' + - '!demo/android/Activity/README.md' + - 'resources/audio_samples/**' + pull_request: + branches: [ main, 'v[0-9]+.[0-9]+'] + paths: + - '.github/workflows/android-appcenter.yml' + - 'demo/android/Activity/**' + - '!demo/android/Activity/README.md' + - 'resources/audio_samples/**' + +defaults: + run: + working-directory: demo/android/Activity + +jobs: + build: + name: Run Android Tests on AppCenter + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Setup Node.js environment + uses: actions/setup-node@v2.4.0 + + - name: Install AppCenter CLI + run: npm install -g appcenter-cli + + - name: set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + + - name: Binding pre-build + run: ./gradlew assemble + working-directory: binding/android + + - name: Copy test_resources + run: ./copy_test_resources.sh + + - name: Inject AccessKey + run: echo pvTestingAccessKey="${{secrets.PV_VALID_ACCESS_KEY}}" >> local.properties + + - name: Build app + run: ./gradlew assembleDebug + + - name: Build androidTest + run: ./gradlew assembleAndroidTest + + - name: Run tests on AppCenter + run: appcenter test run espresso + --token ${{secrets.APPCENTERAPITOKEN}} + --app "Picovoice/Koala-Android" + --devices "Picovoice/android-min-max" + --app-path koala-activity-demo-app/build/outputs/apk/debug/koala-activity-demo-app-debug.apk + --test-series "koala-android" + --locale "en_US" + --build-dir koala-activity-demo-app/build/outputs/apk/androidTest/debug diff --git a/.github/workflows/android-perf.yml b/.github/workflows/android-perf.yml new file mode 100644 index 0000000..3760b6a --- /dev/null +++ b/.github/workflows/android-perf.yml @@ -0,0 +1,83 @@ +name: Android Performance + +on: + workflow_dispatch: + push: + branches: [ main ] + paths: + - '.github/workflows/android-perf.yml' + - 'lib/android/**' + - 'lib/common/**' + - 'resources/audio_samples/**' + pull_request: + branches: [ main, 'v[0-9]+.[0-9]+'] + paths: + - '.github/workflows/android-perf.yml' + - 'lib/android/**' + - 'lib/common/**' + - 'resources/audio_samples/**' + +defaults: + run: + working-directory: demo/android/Activity + +jobs: + build: + name: Run Android Speed Tests on AppCenter + runs-on: ubuntu-latest + + strategy: + matrix: + device: [single-android, 32bit-android] + include: + - device: single-android + performanceThresholdSec: 0.4 + - device: 32bit-android + performanceThresholdSec: 3.0 + + steps: + - uses: actions/checkout@v2 + + - name: Setup Node.js environment + uses: actions/setup-node@v2.4.0 + + - name: Install AppCenter CLI + run: npm install -g appcenter-cli + + - name: set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + + - name: Copy test_resources + run: ./copy_test_resources.sh + + - name: Inject AccessKey + run: echo pvTestingAccessKey="${{secrets.PV_VALID_ACCESS_KEY}}" >> local.properties + + - name: Inject Number of Iterations + run: echo numTestIterations="30" >> local.properties + + - name: Inject Proc Performance Threshold + run: echo performanceThresholdSec="${{ matrix.performanceThresholdSec }}" >> local.properties + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build app + run: ./gradlew assembleDebug + + - name: Build androidTest + run: ./gradlew assembleAndroidTest + + - name: Run tests on AppCenter + run: appcenter test run espresso + --token ${{secrets.APPCENTERAPITOKEN}} + --app "Picovoice/Koala-Android" + --devices "Picovoice/${{ matrix.device }}" + --app-path koala-activity-demo-app/build/outputs/apk/debug/koala-activity-demo-app-debug.apk + --test-series "koala-android" + --locale "en_US" + --build-dir koala-activity-demo-app/build/outputs/apk/androidTest/debug + diff --git a/README.md b/README.md index 764ca9a..b8a69ee 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,13 @@ Koala is an on-device noise suppression engine. Koala is: - [AccessKey](#accesskey) - [Demos](#demos) - [Python](#python-demos) + - [Android](#android-demo) - [iOS](#ios-demo) - [C](#c-demos) - [Web](#web-demo) - [SDKs](#sdks) - [Python](#python) + - [Android](#android) - [iOS](#ios) - [C](#c) - [Web](#web) @@ -65,6 +67,13 @@ koala_demo_file \ Replace `${ACCESS_KEY}` with yours obtained from Picovoice Console. +### Android Demo + +Using [Android Studio](https://developer.android.com/studio/index.html), open +[demo/android/Activity](./demo/android/Activity) as an Android project and then run the application. + +Replace `"${YOUR_ACCESS_KEY_HERE}"` in the file [MainActivity.java](./demo/android/Activity/koala-activity-demo-app/src/main/java/ai/picovoice/koalaactivitydemo/MainActivity.java) with your `AccessKey`. + ### iOS Demo Copy your `AccessKey` into the `ACCESS_KEY` variable inside [`ViewModel.swift`](./demo/ios/KoalaDemo/KoalaDemo/ViewModel.swift). @@ -153,6 +162,42 @@ while True: Finally, when done be sure to explicitly release the resources using `koala.delete()`. +### Android + +To include the package in your Android project, ensure you have included `mavenCentral()` in your top-level `build.gradle` file and then add the following to your app's `build.gradle`: + +```groovy +dependencies { + implementation 'ai.picovoice:koala-android:${LATEST_VERSION}' +} +``` + +Create an instance of the engine and enhance audio in real-time: + +```java +import ai.picovoice.koala.*; + +final String accessKey = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/) + +short[] getNextAudioFrame() { + // .. get audioFrame + return audioFrame; +} + +try { + Koala koala = new Koala.Builder() + .setAccessKey(accessKey) + .build(appContext); + + while true { + short[] enhancedFrame = koala.process(getNextAudioFrame()); + }; + +} catch (KoalaException ex) { } +``` + +Replace `${ACCESS_KEY}` with yours obtained from [Picovoice Console](https://console.picovoice.ai/). + ### iOS Create an instance of the engine and enhance audio: @@ -265,7 +310,6 @@ for (;;) { Replace `${ACCESS_KEY}` with yours obtained from [Picovoice Console](https://console.picovoice.ai/). Finally, when done release the resources using `koala.release()`. - ## Releases ### v1.0.0 February 7th, 2023 diff --git a/binding/android/.gitignore b/binding/android/.gitignore new file mode 100644 index 0000000..f70b309 --- /dev/null +++ b/binding/android/.gitignore @@ -0,0 +1,12 @@ +*.iml +.gradle +/local.properties +/.idea/ +.DS_Store +/build +/captures +test_resources +.settings +.classpath +.project +publish-mavencentral.gradle \ No newline at end of file diff --git a/binding/android/README.md b/binding/android/README.md new file mode 100644 index 0000000..0ed1445 --- /dev/null +++ b/binding/android/README.md @@ -0,0 +1,80 @@ +# Koala Binding for Android + +## Koala Noise Suppression Engine + +Made in Vancouver, Canada by [Picovoice](https://picovoice.ai) + +Koala is an on-device noise suppression engine. Koala is: + +- Private; All voice processing runs locally. +- Cross-Platform: + - Linux (x86_64), macOS (x86_64, arm64), Windows (x86_64) + - Android and iOS + - Chrome, Safari, Firefox, and Edge + - Raspberry Pi (4, 3) and NVIDIA Jetson Nano + +## Compatibility + +- Android 5.0 (SDK 21+) + +## Installation + +Koala is hosted on Maven Central. To include the package in your Android project, ensure you have +included `mavenCentral()` in your top-level `build.gradle` file and then add the following to your +app's `build.gradle`: + +```groovy +dependencies { + // ... + implementation 'ai.picovoice:koala-android:${VERSION}' +} +``` + +## AccessKey + +Koala requires a valid Picovoice `AccessKey` at initialization. `AccessKey` acts as your credentials when using Koala SDKs. +You can get your `AccessKey` for free. Make sure to keep your `AccessKey` secret. +Signup or Login to [Picovoice Console](https://console.picovoice.ai/) to get your `AccessKey`. + +## Usage + +Create an instance of the engine with the Koala Builder class by passing in the `accessKey` and Android app context: + +```java +import ai.picovoice.koala.*; + +final String accessKey = "${ACCESS_KEY}"; // AccessKey provided by Picovoice Console (https://console.picovoice.ai/) +try { + Koala koala = new Koala.Builder() + .setAccessKey(accessKey) + .build(appContext); +} catch (KoalaException ex) { } +``` + +Enhance audio: + +```java +short[] getNextAudioFrame() { + // .. get audioFrame + return audioFrame; +} + +while true { + short[] enhancedFrame = koala.process(getNextAudioFrame()); +} +``` + +In case the next audio frame does not directly follow the previous one, call `reset()`: +```java +koala.reset(); +``` + +When done, resources have to be released explicitly: + +```java +koala.delete(); +``` + +## Demo App + +For example usage refer to our [Android demo application](../../demo/android). diff --git a/binding/android/build.gradle b/binding/android/build.gradle new file mode 100644 index 0000000..073fc63 --- /dev/null +++ b/binding/android/build.gradle @@ -0,0 +1,25 @@ +ext { + defaultTargetSdkVersion = 31 +} + +buildscript { + repositories { + maven { url "https://plugins.gradle.org/m2/" } + google() + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:4.2.2" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/binding/android/gradle.properties b/binding/android/gradle.properties new file mode 100644 index 0000000..6826e61 --- /dev/null +++ b/binding/android/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true \ No newline at end of file diff --git a/binding/android/gradle/wrapper/gradle-wrapper.jar b/binding/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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

<5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/binding/android/gradle/wrapper/gradle-wrapper.properties b/binding/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1659a76 --- /dev/null +++ b/binding/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Jun 29 22:27:49 PDT 2021 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/binding/android/gradlew b/binding/android/gradlew new file mode 100755 index 0000000..cccdd3d --- /dev/null +++ b/binding/android/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/binding/android/gradlew.bat b/binding/android/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/binding/android/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/binding/android/koala/.gitignore b/binding/android/koala/.gitignore new file mode 100644 index 0000000..d4681e4 --- /dev/null +++ b/binding/android/koala/.gitignore @@ -0,0 +1,3 @@ +/build +src/main/jniLibs/**/*.so +src/main/res/**/*.pv diff --git a/binding/android/koala/build.gradle b/binding/android/koala/build.gradle new file mode 100644 index 0000000..0f58d1d --- /dev/null +++ b/binding/android/koala/build.gradle @@ -0,0 +1,53 @@ +apply plugin: 'com.android.library' + +ext { + PUBLISH_GROUP_ID = 'ai.picovoice' + PUBLISH_VERSION = '1.0.0' + PUBLISH_ARTIFACT_ID = 'koala-android' +} + +android { + compileSdkVersion defaultTargetSdkVersion + buildToolsVersion "30.0.3" + + defaultConfig { + minSdkVersion 21 + targetSdkVersion defaultTargetSdkVersion + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +if (file("${rootDir}/publish-mavencentral.gradle").exists()) { + apply from: "${rootDir}/publish-mavencentral.gradle" +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) +} + +task copyLibs(type: Copy) { + from("${rootDir}/../../lib/android") + into("${rootDir}/koala/src/main/jniLibs") +} + +task copyParams(type: Copy) { + from("${rootDir}/../../lib/common") + into("${rootDir}/koala/src/main/res/raw") +} + +preBuild.dependsOn copyLibs +preBuild.dependsOn copyParams diff --git a/binding/android/koala/consumer-rules.pro b/binding/android/koala/consumer-rules.pro new file mode 100644 index 0000000..2f2129e --- /dev/null +++ b/binding/android/koala/consumer-rules.pro @@ -0,0 +1 @@ +-keep class ai.picovoice.koala.*Exception { (...); } diff --git a/binding/android/koala/proguard-rules.pro b/binding/android/koala/proguard-rules.pro new file mode 100644 index 0000000..2f2129e --- /dev/null +++ b/binding/android/koala/proguard-rules.pro @@ -0,0 +1 @@ +-keep class ai.picovoice.koala.*Exception { (...); } diff --git a/binding/android/koala/src/main/AndroidManifest.xml b/binding/android/koala/src/main/AndroidManifest.xml new file mode 100644 index 0000000..312eeed --- /dev/null +++ b/binding/android/koala/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/Koala.java b/binding/android/koala/src/main/java/ai/picovoice/koala/Koala.java new file mode 100644 index 0000000..12083d3 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/Koala.java @@ -0,0 +1,221 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + + +package ai.picovoice.koala; + +import android.content.Context; +import android.content.res.Resources; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * Android binding for Koala Noise Suppression engine. + */ +public class Koala { + + private static String defaultModelPath; + + static { + System.loadLibrary("pv_koala"); + } + + private long handle; + + /** + * Constructor. + * + * @param accessKey AccessKey obtained from Picovoice Console + * @param modelPath Absolute path to the file containing Koala model parameters. + * + * @throws KoalaException if there is an error while initializing Koala. + */ + private Koala(String accessKey, String modelPath) throws KoalaException { + handle = KoalaNative.init(accessKey, modelPath); + } + + private static void extractPackageResources(Context context) throws KoalaException { + final Resources resources = context.getResources(); + + try { + defaultModelPath = extractResource(context, + resources.openRawResource(R.raw.koala_params), + resources.getResourceEntryName(R.raw.koala_params) + ".pv"); + } catch (IOException ex) { + throw new KoalaIOException(ex); + } + } + + private static String extractResource(Context context, InputStream srcFileStream, String dstFilename) throws IOException { + InputStream is = new BufferedInputStream(srcFileStream, 256); + OutputStream os = new BufferedOutputStream(context.openFileOutput(dstFilename, Context.MODE_PRIVATE), 256); + int r; + while ((r = is.read()) != -1) { + os.write(r); + } + os.flush(); + + is.close(); + os.close(); + return new File(context.getFilesDir(), dstFilename).getAbsolutePath(); + } + + /** + * Releases resources acquired by Koala. + */ + public void delete() { + if (handle != 0) { + KoalaNative.delete(handle); + handle = 0; + } + } + + /** + * Processes given audio data and returns delayed enhanced audio. + * + * @param pcm A frame of audio samples. The number of samples per frame can be obtained by + * calling {@link #getFrameLength()}. The incoming audio needs to have a sample rate + * equal to {@link #getSampleRate()} and be 16-bit linearly-encoded. Koala operates + * on single-channel audio. Consecutive calls to {@link #process()} must provide consecutive + * frames of audio from the same source, unless {@link #reset()} has been called in between. + * + * @return A frame of enhanced audio samples, stored as a sequence of 16-bit linearly-encoded integers. + * The output is not directly the enhanced version of the input PCM, but corresponds to samples + * that were given in previous calls to {@link #process()}. The delay in samples between the start + * time of the input frame and the start time of the output frame can be obtained from {@link #getDelaySample()}. + * + * @throws KoalaException if there is an error while processing the audio frame. + */ + public short[] process(short[] pcm) throws KoalaException { + if (handle == 0) { + throw new KoalaInvalidStateException("Attempted to call Koala process after delete."); + } + + if (pcm == null) { + throw new KoalaInvalidArgumentException("Passed null frame to Koala process."); + } + + if (pcm.length != getFrameLength()) { + throw new KoalaInvalidArgumentException( + String.format("Koala process requires frames of length %d. " + + "Received frame of size %d.", getFrameLength(), pcm.length)); + } + return KoalaNative.process(handle, pcm); + } + + /** + * Resets Koala into a state as if it had just been newly created. + * Call this function in between calls to {@link #process()} that do not + * provide consecutive frames of audio. + * + * + * @throws KoalaException if there is an error while processing the audio frame. + */ + public void reset() throws KoalaException { + if (handle == 0) { + throw new KoalaInvalidStateException("Attempted to call Koala reset after delete."); + } + KoalaNative.reset(handle); + } + + /** + * Getter for required number of audio samples per frame. + * + * @return Required number of audio samples per frame. + */ + public int getFrameLength() { + return KoalaNative.getFrameLength(); + } + + /** + * Getter for required audio sample rate for PCM data. + * + * @return Required audio sample rate for PCM data. + */ + public int getSampleRate() { + return KoalaNative.getSampleRate(); + } + + /** + * Getter for Koala version. + * + * @return Koala version. + */ + public String getVersion() { + return KoalaNative.getVersion(); + } + + /** + * Getter for Koala delaySample. + * + * @return Koala process delay in number of samples. + */ + public int getDelaySample() throws KoalaException { + return KoalaNative.delaySample(handle); + } + + public static class Builder { + + private String accessKey = null; + private String modelPath = null; + + /** + * Setter for the AccessKey + * + * @param accessKey AccessKey obtained from Picovoice Console + */ + public Builder setAccessKey(String accessKey) { + this.accessKey = accessKey; + return this; + } + + /** + * Setter for the absolute path to the file containing Koala model parameters. + * + * @param modelPath Absolute path to the file containing Koala model parameters. + */ + public Builder setModelPath(String modelPath) { + this.modelPath = modelPath; + return this; + } + + public Koala build(Context context) throws KoalaException { + if (accessKey == null || this.accessKey.equals("")) { + throw new KoalaInvalidArgumentException("No AccessKey was provided to Koala"); + } + + if (modelPath == null) { + if (defaultModelPath == null) { + extractPackageResources(context); + } + modelPath = defaultModelPath; + } else { + File modelFile = new File(modelPath); + String modelFilename = modelFile.getName(); + if (!modelFile.exists() && !modelFilename.equals("")) { + try { + modelPath = extractResource(context, + context.getAssets().open(modelPath), + modelFilename); + } catch (IOException ex) { + throw new KoalaIOException(ex); + } + } + } + + return new Koala(accessKey, modelPath); + } + } +} diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/KoalaNative.java b/binding/android/koala/src/main/java/ai/picovoice/koala/KoalaNative.java new file mode 100644 index 0000000..c954efa --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/KoalaNative.java @@ -0,0 +1,33 @@ +/* + Copyright 2023 Picovoice Inc. + + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +class KoalaNative { + + static native int getSampleRate(); + + static native String getVersion(); + + static native int getFrameLength(); + + static native long init(String accessKey, String modelPath) throws KoalaException; + + static native void delete(long object); + + static native short[] process(long object, short[] pcm) throws KoalaException; + + static native void reset(long object) throws KoalaException; + + static native int delaySample(long object) throws KoalaException; + +} diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationException.java new file mode 100644 index 0000000..1b3138d --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaActivationException extends KoalaException { + public KoalaActivationException(Throwable cause) { + super(cause); + } + + public KoalaActivationException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationLimitException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationLimitException.java new file mode 100644 index 0000000..c04c005 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationLimitException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaActivationLimitException extends KoalaException { + public KoalaActivationLimitException(Throwable cause) { + super(cause); + } + + public KoalaActivationLimitException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationRefusedException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationRefusedException.java new file mode 100644 index 0000000..d9ff09e --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationRefusedException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaActivationRefusedException extends KoalaException { + public KoalaActivationRefusedException(Throwable cause) { + super(cause); + } + + public KoalaActivationRefusedException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationThrottledException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationThrottledException.java new file mode 100644 index 0000000..b50d1a5 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaActivationThrottledException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaActivationThrottledException extends KoalaException { + public KoalaActivationThrottledException(Throwable cause) { + super(cause); + } + + public KoalaActivationThrottledException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaException.java new file mode 100644 index 0000000..6042dd4 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaException extends Exception { + public KoalaException(Throwable cause) { + super(cause); + } + + public KoalaException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaIOException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaIOException.java new file mode 100644 index 0000000..ba2b3e0 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaIOException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaIOException extends KoalaException { + public KoalaIOException(Throwable cause) { + super(cause); + } + + public KoalaIOException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidArgumentException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidArgumentException.java new file mode 100644 index 0000000..4abc938 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidArgumentException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaInvalidArgumentException extends KoalaException { + public KoalaInvalidArgumentException(Throwable cause) { + super(cause); + } + + public KoalaInvalidArgumentException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidStateException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidStateException.java new file mode 100644 index 0000000..9d80896 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaInvalidStateException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaInvalidStateException extends KoalaException { + public KoalaInvalidStateException(Throwable cause) { + super(cause); + } + + public KoalaInvalidStateException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaKeyException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaKeyException.java new file mode 100644 index 0000000..5215661 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaKeyException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaKeyException extends KoalaException { + public KoalaKeyException(Throwable cause) { + super(cause); + } + + public KoalaKeyException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaMemoryException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaMemoryException.java new file mode 100644 index 0000000..b5d7a63 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaMemoryException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaMemoryException extends KoalaException { + public KoalaMemoryException(Throwable cause) { + super(cause); + } + + public KoalaMemoryException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaRuntimeException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaRuntimeException.java new file mode 100644 index 0000000..d1dba66 --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaRuntimeException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaRuntimeException extends KoalaException { + public KoalaRuntimeException(Throwable cause) { + super(cause); + } + + public KoalaRuntimeException(String message) { + super(message); + } +} + diff --git a/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaStopIterationException.java b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaStopIterationException.java new file mode 100644 index 0000000..595d14d --- /dev/null +++ b/binding/android/koala/src/main/java/ai/picovoice/koala/exception/KoalaStopIterationException.java @@ -0,0 +1,22 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koala; + +public class KoalaStopIterationException extends KoalaException { + public KoalaStopIterationException(Throwable cause) { + super(cause); + } + + public KoalaStopIterationException(String message) { + super(message); + } +} + diff --git a/binding/android/settings.gradle b/binding/android/settings.gradle new file mode 100644 index 0000000..98eee24 --- /dev/null +++ b/binding/android/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = "Koala" +include ':koala' diff --git a/demo/android/.gitignore b/demo/android/.gitignore new file mode 100644 index 0000000..3f98908 --- /dev/null +++ b/demo/android/.gitignore @@ -0,0 +1,18 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties +.settings +.classpath +.project \ No newline at end of file diff --git a/demo/android/Activity/.gitignore b/demo/android/Activity/.gitignore new file mode 100644 index 0000000..9b41607 --- /dev/null +++ b/demo/android/Activity/.gitignore @@ -0,0 +1,10 @@ +*.iml +.gradle +/local.properties +/.idea/ +.DS_Store +/build +/captures +.externalNativeBuild +release +test_resources \ No newline at end of file diff --git a/demo/android/Activity/README.md b/demo/android/Activity/README.md new file mode 100644 index 0000000..4e4824d --- /dev/null +++ b/demo/android/Activity/README.md @@ -0,0 +1,22 @@ +# Android Activity Demo + +This Android demo runs Koala in the foreground (i.e., when the app is in focus). + +## Setup + +1. Replace `String ACCESS_KEY = "..."` inside + [MainActivity.java](koala-activity-demo-app/src/main/java/ai/picovoice/koalaactivitydemo/MainActivity.java) + with your AccessKey generated by [Picovoice Console](https://console.picovoice.ai/). + +```java +private static final String ACCESS_KEY = "YOUR_ACCESS_KEY_HERE"; +``` + +2. Add `pvTestingAccessKey = "..."` inside `local.properties` + with your AccessKey generated by [Picovoice Console](https://console.picovoice.ai/). + +```console +pvTestingAccessKey=YOUR_ACCESS_KEY_HERE +``` + +3. Open the project in Android Studio and run the demo on your device or simulator. diff --git a/demo/android/Activity/build.gradle b/demo/android/Activity/build.gradle new file mode 100644 index 0000000..23605a6 --- /dev/null +++ b/demo/android/Activity/build.gradle @@ -0,0 +1,28 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +ext { + defaultTargetSdkVersion = 31 +} + +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:7.4.1' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/demo/android/Activity/copy_test_resources.sh b/demo/android/Activity/copy_test_resources.sh new file mode 100755 index 0000000..a7120f5 --- /dev/null +++ b/demo/android/Activity/copy_test_resources.sh @@ -0,0 +1,9 @@ +if [ ! -d "./koala-activity-demo-app/src/androidTest/assets/test_resources/audio" ] +then + echo "Creating test audio samples directory..." + mkdir -p ./koala-activity-demo-app/src/androidTest/assets/test_resources/audio +fi + +echo "Copying test audio samples..." +cp ../../../resources/audio_samples/test.wav ./koala-activity-demo-app/src/androidTest/assets/test_resources/audio/test.wav +cp ../../../resources/audio_samples/noise.wav ./koala-activity-demo-app/src/androidTest/assets/test_resources/audio/noise.wav diff --git a/demo/android/Activity/gradle.properties b/demo/android/Activity/gradle.properties new file mode 100644 index 0000000..c09e1e3 --- /dev/null +++ b/demo/android/Activity/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true diff --git a/demo/android/Activity/gradle/wrapper/gradle-wrapper.jar b/demo/android/Activity/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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

<5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/demo/android/Activity/gradle/wrapper/gradle-wrapper.properties b/demo/android/Activity/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..3fadc5c --- /dev/null +++ b/demo/android/Activity/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Jun 29 23:02:09 PDT 2021 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/demo/android/Activity/gradlew b/demo/android/Activity/gradlew new file mode 100755 index 0000000..cccdd3d --- /dev/null +++ b/demo/android/Activity/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/demo/android/Activity/gradlew.bat b/demo/android/Activity/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/demo/android/Activity/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/demo/android/Activity/koala-activity-demo-app/.gitignore b/demo/android/Activity/koala-activity-demo-app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/build.gradle b/demo/android/Activity/koala-activity-demo-app/build.gradle new file mode 100644 index 0000000..e64f69c --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/build.gradle @@ -0,0 +1,78 @@ +plugins { + id 'com.android.application' +} + +Properties properties = new Properties() +if (rootProject.file("local.properties").exists()) { + properties.load(rootProject.file("local.properties").newDataInputStream()) + if (project.hasProperty("pvTestingAccessKey")) { + properties.put("pvTestingAccessKey", project.getProperty("pvTestingAccessKey")) + } + if (project.hasProperty("numTestIterations")) { + properties.put("numTestIterations", project.getProperty("numTestIterations")) + } + if (project.hasProperty("performanceThresholdSec")) { + properties.put("performanceThresholdSec", project.getProperty("performanceThresholdSec")) + } +} + +android { + compileSdkVersion defaultTargetSdkVersion + buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "ai.picovoice.koalaactivitydemo" + minSdkVersion 21 + targetSdkVersion defaultTargetSdkVersion + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + resValue 'string', 'pvTestingAccessKey', properties.getProperty("pvTestingAccessKey", "") + resValue 'string', 'numTestIterations', properties.getProperty("numTestIterations", "") + resValue 'string', 'performanceThresholdSec', properties.getProperty("performanceThresholdSec", "") + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + sourceSets { + androidTest { + java { + System.out.println() + if (properties.getProperty("performanceThresholdSec", "").length() == 0) { + exclude "**/PerformanceTest.java" + } else { + exclude "**/KoalaTest.java" + } + } + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + buildFeatures { + viewBinding true + } +} + +dependencies { + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.1' + implementation 'androidx.navigation:navigation-fragment:2.3.5' + implementation 'androidx.navigation:navigation-ui:2.3.5' + implementation 'ai.picovoice:koala-android:1.0.0' + + // Espresso UI Testing + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation('androidx.test.espresso:espresso-core:3.2.0', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + + androidTestImplementation('com.microsoft.appcenter:espresso-test-extension:1.4') +} diff --git a/demo/android/Activity/koala-activity-demo-app/proguard-rules.pro b/demo/android/Activity/koala-activity-demo-app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/KoalaTest.java b/demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/KoalaTest.java new file mode 100644 index 0000000..0e70305 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/KoalaTest.java @@ -0,0 +1,221 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + +package ai.picovoice.koalaactivitydemo; + +import static androidx.test.core.app.ApplicationProvider.getApplicationContext; + +import android.content.Context; +import android.content.res.AssetManager; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import com.microsoft.appcenter.espresso.Factory; +import com.microsoft.appcenter.espresso.ReportHelper; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.ShortBuffer; +import java.util.ArrayList; +import java.util.List; + +import ai.picovoice.koala.Koala; +import ai.picovoice.koala.KoalaException; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + + +@RunWith(AndroidJUnit4.class) +public class KoalaTest { + + @Rule + public ReportHelper reportHelper = Factory.getReportHelper(); + Context testContext; + Context appContext; + AssetManager assetManager; + String testResourcesPath; + + String accessKey = ""; + + @After + public void TearDown() { + reportHelper.label("Stopping App"); + } + + @Before + public void Setup() throws IOException { + testContext = InstrumentationRegistry.getInstrumentation().getContext(); + appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assetManager = testContext.getAssets(); + extractAssetsRecursively("test_resources"); + testResourcesPath = new File(appContext.getFilesDir(), "test_resources").getAbsolutePath(); + + accessKey = appContext.getString(R.string.pvTestingAccessKey); + } + + private List loadPcm(File file) throws IOException { + FileInputStream inputStream = new FileInputStream(file); + inputStream.skip(44); + + List output = new ArrayList<>(); + + byte[] buffer = new byte[512 * 2]; + ByteBuffer pcmBuff = ByteBuffer.wrap(buffer).order(ByteOrder.LITTLE_ENDIAN); + + while (inputStream.available() > 0) { + int numRead = inputStream.read(pcmBuff.array()); + ShortBuffer pcmShortBuffer = pcmBuff.asShortBuffer(); + for (int i = 0; i < (numRead / 2); i ++) { + output.add(pcmShortBuffer.get(i)); + } + } + return output; + } + + private double pcmRootMeanSquare(short[] frame) { + double sumOfSquares = 0; + for (short x : frame) { + sumOfSquares += Math.pow((x / 32768f), 2); + } + return Math.sqrt((sumOfSquares / frame.length)); + } + + private short[] frameFromList(List inputList, int start, int count) { + short[] output = new short[count]; + for(int i = 0; i < count; i++) { + output[i] = inputList.get(start + i); + } + return output; + } + + private void runTest(List inputPcm, List referencePcm, double tolerance) throws KoalaException { + Koala koala = new Koala.Builder().setAccessKey(accessKey).build(getApplicationContext()); + + for (int i = 0; i < (inputPcm.size() - koala.getFrameLength()); i += koala.getFrameLength()) { + short[] frame = frameFromList(inputPcm, i, koala.getFrameLength()); + short[] enhancedFrame = koala.process(frame); + + double energyDeviation; + double enhancedFrameEnergy = pcmRootMeanSquare(enhancedFrame); + if (referencePcm == null || i < koala.getDelaySample()) { + energyDeviation = enhancedFrameEnergy; + } else { + short[] referenceFrame = frameFromList(referencePcm, i - koala.getDelaySample(), koala.getFrameLength()); + double referenceFrameEnergy = pcmRootMeanSquare(referenceFrame); + energyDeviation = Math.abs(enhancedFrameEnergy - referenceFrameEnergy); + } + assertTrue(energyDeviation < tolerance); + } + } + + @Test + public void testPureSpeech() throws KoalaException, IOException { + List testPcm = loadPcm(new File(testResourcesPath, "audio/test.wav")); + runTest(testPcm, testPcm, 0.02); + } + + @Test + public void testPureNoise() throws KoalaException, IOException { + List noisePcm = loadPcm(new File(testResourcesPath, "audio/noise.wav")); + runTest(noisePcm, null, 0.02); + } + + @Test + public void testMixed() throws KoalaException, IOException { + List testPcm = loadPcm(new File(testResourcesPath, "audio/test.wav")); + List noisePcm = loadPcm(new File(testResourcesPath, "audio/noise.wav")); + List mixedPcm = new ArrayList<>(); + for (int i = 0; i < testPcm.size(); i++) { + Short mixed = (short) (testPcm.get(i) + noisePcm.get(i)); + mixedPcm.add(mixed); + } + runTest(mixedPcm, testPcm, 0.02); + } + + @Test + public void testReset() throws KoalaException, IOException { + Koala koala = new Koala.Builder().setAccessKey(accessKey).build(getApplicationContext()); + List testPcm = loadPcm(new File(testResourcesPath, "audio/test.wav")); + + List referenceFrames = new ArrayList<>(); + + for (int i = 0; i < (testPcm.size() - koala.getFrameLength()); i += koala.getFrameLength()) { + short[] inputFrame = frameFromList(testPcm, i, koala.getFrameLength()); + referenceFrames.add(koala.process(inputFrame)); + } + + koala.reset(); + + for (int i = 0; i < (testPcm.size() - koala.getFrameLength()); i += koala.getFrameLength()) { + short[] inputFrame = frameFromList(testPcm, i, koala.getFrameLength()); + short[] outputFrame = koala.process(inputFrame); + + short[] referenceFrame = referenceFrames.remove(0); + for (int j = 0; j < outputFrame.length; j++) { + assertEquals(outputFrame[j], referenceFrame[j]); + } + } + } + + @Test + public void testVersion() throws KoalaException { + Koala koala = new Koala.Builder().setAccessKey(accessKey).build(getApplicationContext()); + assertTrue(koala.getVersion().length() > 0); + } + + private void extractAssetsRecursively(String path) throws IOException { + + String[] list = assetManager.list(path); + if (list.length > 0) { + File outputFile = new File(appContext.getFilesDir(), path); + if (!outputFile.exists()) { + outputFile.mkdirs(); + } + + for (String file : list) { + String filepath = path + "/" + file; + extractAssetsRecursively(filepath); + } + } else { + extractTestFile(path); + } + } + + private void extractTestFile(String filepath) throws IOException { + + InputStream is = new BufferedInputStream(assetManager.open(filepath), 256); + File absPath = new File(appContext.getFilesDir(), filepath); + OutputStream os = new BufferedOutputStream(new FileOutputStream(absPath), 256); + int r; + while ((r = is.read()) != -1) { + os.write(r); + } + os.flush(); + + is.close(); + os.close(); + } +} diff --git a/demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/PerformanceTest.java b/demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/PerformanceTest.java new file mode 100644 index 0000000..ea521ff --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/androidTest/java/ai/picovoice/koalaactivitydemo/PerformanceTest.java @@ -0,0 +1,147 @@ +/* + Copyright 2023 Picovoice Inc. + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ +package ai.picovoice.koalaactivitydemo; + +import static androidx.test.core.app.ApplicationProvider.getApplicationContext; +import static org.junit.Assert.assertTrue; + +import android.content.Context; +import android.content.res.AssetManager; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import com.microsoft.appcenter.espresso.Factory; +import com.microsoft.appcenter.espresso.ReportHelper; + +import org.junit.After; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +import ai.picovoice.koala.Koala; + +@RunWith(AndroidJUnit4.class) +public class PerformanceTest { + @Rule + public ReportHelper reportHelper = Factory.getReportHelper(); + Context testContext; + Context appContext; + AssetManager assetManager; + String testResourcesPath; + String accessKey; + + @After + public void TearDown() { + reportHelper.label("Stopping App"); + } + + @Before + public void Setup() throws IOException { + testContext = InstrumentationRegistry.getInstrumentation().getContext(); + appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assetManager = testContext.getAssets(); + extractAssetsRecursively("test_resources"); + testResourcesPath = new File(appContext.getFilesDir(), "test_resources").getAbsolutePath(); + + accessKey = appContext.getString(R.string.pvTestingAccessKey); + } + + @Test + public void testPerformance() throws Exception { + String iterationString = appContext.getString(R.string.numTestIterations); + String thresholdString = appContext.getString(R.string.performanceThresholdSec); + Assume.assumeNotNull(thresholdString); + Assume.assumeFalse(thresholdString.equals("")); + + int numTestIterations = 100; + try { + numTestIterations = Integer.parseInt(iterationString); + } catch (NumberFormatException ignored) {} + double performanceThresholdSec = Double.parseDouble(thresholdString); + + Koala koala = new Koala.Builder().setAccessKey(accessKey).build(getApplicationContext()); + File testAudio = new File(testResourcesPath, "audio/test.wav"); + + long totalNSec = 0; + for (int i = 0; i < numTestIterations; i++) { + FileInputStream audioInputStream = new FileInputStream(testAudio); + + byte[] rawData = new byte[koala.getFrameLength() * 2]; + short[] pcm = new short[koala.getFrameLength()]; + ByteBuffer pcmBuff = ByteBuffer.wrap(rawData).order(ByteOrder.LITTLE_ENDIAN); + + audioInputStream.skip(44); + + while (audioInputStream.available() > 0) { + int numRead = audioInputStream.read(pcmBuff.array()); + if (numRead == koala.getFrameLength() * 2) { + pcmBuff.asShortBuffer().get(pcm); + long before = System.nanoTime(); + koala.process(pcm); + long after = System.nanoTime(); + totalNSec += after - before; + } + } + } + koala.delete(); + + double avgNSec = totalNSec / (double) numTestIterations; + double avgSec = ((double) Math.round(avgNSec * 1e-6)) / 1000.0; + assertTrue( + String.format("Expected threshold (%.3fs), process took (%.3fs)", performanceThresholdSec, avgSec), + avgSec <= performanceThresholdSec + ); + } + + private void extractAssetsRecursively(String path) throws IOException { + String[] list = assetManager.list(path); + if (list.length > 0) { + File outputFile = new File(appContext.getFilesDir(), path); + if (!outputFile.exists()) { + outputFile.mkdirs(); + } + + for (String file : list) { + String filepath = path + "/" + file; + extractAssetsRecursively(filepath); + } + } else { + extractTestFile(path); + } + } + + private void extractTestFile(String filepath) throws IOException { + InputStream is = new BufferedInputStream(assetManager.open(filepath), 256); + File absPath = new File(appContext.getFilesDir(), filepath); + OutputStream os = new BufferedOutputStream(new FileOutputStream(absPath), 256); + int r; + while ((r = is.read()) != -1) { + os.write(r); + } + os.flush(); + + is.close(); + os.close(); + } +} diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/AndroidManifest.xml b/demo/android/Activity/koala-activity-demo-app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..0f082a4 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/ic_launcher-playstore.png b/demo/android/Activity/koala-activity-demo-app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7d9f62a211b22188ef790a8ca3b60923dca1fc GIT binary patch literal 27403 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 HO~n5JsWn^e literal 0 HcmV?d00001 diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/java/ai/picovoice/koalaactivitydemo/MainActivity.java b/demo/android/Activity/koala-activity-demo-app/src/main/java/ai/picovoice/koalaactivitydemo/MainActivity.java new file mode 100644 index 0000000..85862dd --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/java/ai/picovoice/koalaactivitydemo/MainActivity.java @@ -0,0 +1,384 @@ +/* + Copyright 2023 Picovoice Inc. + + You may not use this file except in compliance with the license. A copy of the license is + located in the "LICENSE" file accompanying this source. + + Unless required by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing permissions and + limitations under the License. +*/ + + +package ai.picovoice.koalaactivitydemo; + +import android.Manifest; +import android.annotation.SuppressLint; +import android.content.pm.PackageManager; +import android.media.AudioAttributes; +import android.media.AudioFormat; +import android.media.AudioRecord; +import android.media.MediaPlayer; +import android.media.MediaRecorder; +import android.os.Bundle; +import android.os.Process; +import android.view.View; +import android.widget.SeekBar; +import android.widget.SeekBar.OnSeekBarChangeListener; +import android.widget.TextView; +import android.widget.Toast; +import android.widget.ToggleButton; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +import java.io.IOException; +import java.io.RandomAccessFile; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.concurrent.Callable; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; + +import ai.picovoice.koala.*; + +public class MainActivity extends AppCompatActivity implements OnSeekBarChangeListener { + private final MicrophoneReader microphoneReader = new MicrophoneReader(); + public Koala koala; + + private static final String ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"; + + private ToggleButton recordButton; + private ToggleButton playStopButton; + private TextView recordedText; + private ConstraintLayout playbackArea; + + private String referenceFilepath; + private String enhancedFilepath; + private MediaPlayer referenceMediaPlayer; + private MediaPlayer enhancedMediaPlayer; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.koala_activity_demo); + + recordButton = findViewById(R.id.startButton); + playStopButton = findViewById(R.id.playStopButton); + recordedText = findViewById(R.id.recordedText); + playbackArea = findViewById(R.id.playbackArea); + + SeekBar faderSlider = findViewById(R.id.faderSlider); + faderSlider.setOnSeekBarChangeListener(this); + + recordedText.setText(""); + playbackArea.setVisibility(View.INVISIBLE); + + try { + koala = new Koala.Builder().setAccessKey(ACCESS_KEY).build(getApplicationContext()); + } catch (KoalaInvalidArgumentException e) { + onKoalaInitError(String.format("AccessKey '%s' is invalid", ACCESS_KEY)); + } catch (KoalaActivationException e) { + onKoalaInitError("AccessKey activation error"); + } catch (KoalaActivationLimitException e) { + onKoalaInitError("AccessKey reached its device limit"); + } catch (KoalaActivationRefusedException e) { + onKoalaInitError("AccessKey refused"); + } catch (KoalaActivationThrottledException e) { + onKoalaInitError("AccessKey has been throttled"); + } catch (KoalaException e) { + onKoalaInitError("Failed to initialize Koala " + e.getMessage()); + } + + referenceFilepath = getApplicationContext().getFileStreamPath("reference.wav").getAbsolutePath(); + enhancedFilepath = getApplicationContext().getFileStreamPath("enhanced.wav").getAbsolutePath(); + referenceMediaPlayer = new MediaPlayer(); + enhancedMediaPlayer = new MediaPlayer(); + referenceMediaPlayer.setVolume(0, 0); + enhancedMediaPlayer.setVolume(1, 1); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (referenceMediaPlayer != null) { + referenceMediaPlayer.release(); + } + if (enhancedMediaPlayer != null) { + enhancedMediaPlayer.release(); + } + koala.delete(); + } + + private void onKoalaInitError(String error) { + TextView errorMessage = findViewById(R.id.errorMessage); + errorMessage.setText(error); + errorMessage.setVisibility(View.VISIBLE); + + recordButton.setEnabled(false); + recordButton.setBackground(ContextCompat.getDrawable(this, R.drawable.button_disabled)); + } + + private void displayError(String message) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + + private boolean hasRecordPermission() { + return ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED; + } + + private void requestRecordPermission() { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 0); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (grantResults.length == 0 || grantResults[0] == PackageManager.PERMISSION_DENIED) { + ToggleButton toggleButton = findViewById(R.id.startButton); + toggleButton.toggle(); + } else { + try { + microphoneReader.start(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + public void onClickRecord(View view) { + try { + if (recordButton.isChecked()) { + playbackArea.setVisibility(View.INVISIBLE); + playStopButton.setChecked(false); + + if (referenceMediaPlayer.isPlaying()) { + referenceMediaPlayer.stop(); + } + if (enhancedMediaPlayer.isPlaying()) { + enhancedMediaPlayer.stop(); + } + + if (hasRecordPermission()) { + microphoneReader.start(); + } else { + requestRecordPermission(); + } + } else { + microphoneReader.stop(); + + resetMediaPlayer(referenceMediaPlayer, referenceFilepath); + resetMediaPlayer(enhancedMediaPlayer, enhancedFilepath); + + playbackArea.setVisibility(View.VISIBLE); + } + } catch (InterruptedException | IOException e) { + displayError("Audio stop command interrupted\n" + e.getMessage()); + } + } + + private void resetMediaPlayer(MediaPlayer mediaPlayer, String audioFile) throws IOException { + mediaPlayer.reset(); + mediaPlayer.setAudioAttributes( + new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) + .setUsage(AudioAttributes.USAGE_MEDIA) + .build() + ); + mediaPlayer.setLooping(true); + mediaPlayer.setDataSource(audioFile); + mediaPlayer.prepare(); + } + + public void onClickPlay(View view) { + if (playStopButton.isChecked()) { + referenceMediaPlayer.start(); + enhancedMediaPlayer.start(); + } else { + referenceMediaPlayer.pause(); + enhancedMediaPlayer.pause(); + referenceMediaPlayer.seekTo(0); + enhancedMediaPlayer.seekTo(0); + } + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + if(seekBar.getId() == R.id.faderSlider){ + float progressFloat = (float) progress; + float referenceVol = (100f - progressFloat) / 100f; + float enhancedVol = progressFloat / 100f; + + referenceMediaPlayer.setVolume(referenceVol, referenceVol); + enhancedMediaPlayer.setVolume(enhancedVol, enhancedVol); + } + } + + private class MicrophoneReader { + private final AtomicBoolean started = new AtomicBoolean(false); + private final AtomicBoolean stop = new AtomicBoolean(false); + private final AtomicBoolean stopped = new AtomicBoolean(false); + + final int wavHeaderLength = 44; + private RandomAccessFile referenceFile; + private RandomAccessFile enhancedFile; + private int totalSamplesWritten; + + + void start() throws IOException { + + if (started.get()) { + return; + } + + referenceFile = new RandomAccessFile(referenceFilepath, "rws"); + enhancedFile = new RandomAccessFile(enhancedFilepath, "rws"); + writeWavHeader(referenceFile, (short) 1, (short) 16, 16000, 0); + writeWavHeader(enhancedFile, (short) 1, (short) 16, 16000, 0); + + started.set(true); + + Executors.newSingleThreadExecutor().submit((Callable) () -> { + Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_AUDIO); + read(); + return null; + }); + } + + void stop() throws InterruptedException, IOException { + if (!started.get()) { + return; + } + + stop.set(true); + + while (!stopped.get()) { + Thread.sleep(10); + } + + writeWavHeader(referenceFile, (short) 1, (short) 16, 16000, totalSamplesWritten); + writeWavHeader(enhancedFile, (short) 1, (short) 16, 16000, totalSamplesWritten); + referenceFile.close(); + enhancedFile.close(); + + started.set(false); + stop.set(false); + stopped.set(false); + } + + @SuppressLint({"MissingPermission", "SetTextI18n", "DefaultLocale"}) + private void read() throws KoalaException { + final int minBufferSize = AudioRecord.getMinBufferSize( + koala.getSampleRate(), + AudioFormat.CHANNEL_IN_MONO, + AudioFormat.ENCODING_PCM_16BIT); + final int bufferSize = Math.max(koala.getSampleRate() / 2, minBufferSize); + + AudioRecord audioRecord = null; + + short[] frameBuffer = new short[koala.getFrameLength()]; + + try { + audioRecord = new AudioRecord( + MediaRecorder.AudioSource.MIC, + koala.getSampleRate(), + AudioFormat.CHANNEL_IN_MONO, + AudioFormat.ENCODING_PCM_16BIT, + bufferSize); + audioRecord.startRecording(); + + final int koalaDelay = koala.getDelaySample(); + + totalSamplesWritten = 0; + int enhancedSamplesWritten = 0; + while (!stop.get()) { + if (audioRecord.read(frameBuffer, 0, frameBuffer.length) == frameBuffer.length) { + final short[] frameBufferEnhanced = koala.process(frameBuffer); + + writeFrame(referenceFile, frameBuffer); + totalSamplesWritten += frameBuffer.length; + if (totalSamplesWritten >= koalaDelay) { + writeFrame(enhancedFile, frameBufferEnhanced); + enhancedSamplesWritten += frameBufferEnhanced.length; + } + } + + if ((totalSamplesWritten / koala.getFrameLength()) % 10 == 0) { + runOnUiThread(() -> { + double secondsRecorded = ((double) (totalSamplesWritten) / (double) (koala.getSampleRate())); + recordedText.setText(String.format("Recording: %.1fs", secondsRecorded)); + }); + } + } + + audioRecord.stop(); + + runOnUiThread(() -> { + double secondsRecorded = ((double) (totalSamplesWritten) / (double) (koala.getSampleRate())); + recordedText.setText(String.format("Recorded: %.1fs", secondsRecorded)); + }); + + short[] emptyFrame = new short[koala.getFrameLength()]; + Arrays.fill(emptyFrame, (short) 0); + while (enhancedSamplesWritten < totalSamplesWritten) { + final short[] frameBufferEnhanced = koala.process(emptyFrame); + writeFrame(enhancedFile, frameBufferEnhanced); + enhancedSamplesWritten += frameBufferEnhanced.length; + } + } catch (IllegalArgumentException | IllegalStateException | IOException e) { + throw new KoalaException(e); + } finally { + if (audioRecord != null) { + audioRecord.release(); + } + stopped.set(true); + } + } + + private void writeFrame(RandomAccessFile outputFile, short[] frame) throws IOException { + ByteBuffer byteBuf = ByteBuffer.allocate(2 * frame.length); + byteBuf.order(ByteOrder.LITTLE_ENDIAN); + + for (short s : frame) { + byteBuf.putShort(s); + } + outputFile.write(byteBuf.array()); + } + + private void writeWavHeader(RandomAccessFile outputFile, short channelCount, short bitDepth, int sampleRate, int totalSampleCount) throws IOException { + ByteBuffer byteBuf = ByteBuffer.allocate(wavHeaderLength); + byteBuf.order(ByteOrder.LITTLE_ENDIAN); + + byteBuf.put("RIFF".getBytes(StandardCharsets.US_ASCII)); + byteBuf.putInt((bitDepth / 8 * totalSampleCount) + 36); + byteBuf.put("WAVE".getBytes(StandardCharsets.US_ASCII)); + byteBuf.put("fmt ".getBytes(StandardCharsets.US_ASCII)); + byteBuf.putInt(16); + byteBuf.putShort((short) 1); + byteBuf.putShort(channelCount); + byteBuf.putInt(sampleRate); + byteBuf.putInt(sampleRate * channelCount * bitDepth / 8); + byteBuf.putShort((short) (channelCount * bitDepth / 8)); + byteBuf.putShort(bitDepth); + byteBuf.put("data".getBytes(StandardCharsets.US_ASCII)); + byteBuf.putInt(bitDepth / 8 * totalSampleCount); + + outputFile.seek(0); + outputFile.write(byteBuf.array()); + } + } +} diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_background.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_background.xml new file mode 100644 index 0000000..7e73f1a --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_background.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_disabled.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_disabled.xml new file mode 100644 index 0000000..ffe1c93 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/button_disabled.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/error_view.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/error_view.xml new file mode 100644 index 0000000..953beb3 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/error_view.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_background.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..196e181 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,10 @@ + + + + diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_foreground.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..d2923ae --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/layout/koala_activity_demo.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/layout/koala_activity_demo.xml new file mode 100644 index 0000000..5187bf5 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/layout/koala_activity_demo.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..bbd3e02 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..bbd3e02 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-hdpi/ic_launcher.png b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..110f05f44c62c3f8e02b8dd742b42c7de4b82930 GIT binary patch literal 2461 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 bTeSZG_!%0MBD{s>00000NkvXXu0mjfFQ>bE literal 0 HcmV?d00001 diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..60f69a70d105e56e3d5afc8ff1c47badac72aac0 GIT binary patch literal 3734 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 AQvd(} literal 0 HcmV?d00001 diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-mdpi/ic_launcher.png b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9b773de2c41aa4a2f0a364502f9b482571952871 GIT binary patch literal 1604 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 literal 0 HcmV?d00001 diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..54506ae19ae9a90ca55f0d5464a993bb50608451 GIT binary patch literal 5062 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 z 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 HGY|eBTUly$ literal 0 HcmV?d00001 diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/demo/android/Activity/koala-activity-demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..16ae460076b68713ab1ae700e9cc4f776f21b1fa GIT binary patch literal 12022 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 UZz$I&&;S4c07*qoM6N<$g1BfF-v9sr literal 0 HcmV?d00001 diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/values/attrs.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..e962673 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/attrs.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/values/colors.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/colors.xml new file mode 100644 index 0000000..30640a6 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/colors.xml @@ -0,0 +1,7 @@ + + + #377DFF + #25187E + #ff0e0e + #76838e + diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/values/strings.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/strings.xml new file mode 100644 index 0000000..ebe858b --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/strings.xml @@ -0,0 +1,6 @@ + + Koala Activity + Original + Koalafied + 0.8 + diff --git a/demo/android/Activity/koala-activity-demo-app/src/main/res/values/styles.xml b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/styles.xml new file mode 100644 index 0000000..db38c53 --- /dev/null +++ b/demo/android/Activity/koala-activity-demo-app/src/main/res/values/styles.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/demo/android/Activity/settings.gradle b/demo/android/Activity/settings.gradle new file mode 100644 index 0000000..e64fe9d --- /dev/null +++ b/demo/android/Activity/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = "KoalaActivityDemo" +include ':koala-activity-demo-app' diff --git a/demo/android/README.md b/demo/android/README.md new file mode 100644 index 0000000..10ef65f --- /dev/null +++ b/demo/android/README.md @@ -0,0 +1,13 @@ +# Android Demos + +## AccessKey + +Koala requires a valid Picovoice `AccessKey` at initialization. `AccessKey` acts as your credentials when using Koala SDKs. +You can get your `AccessKey` for free. Make sure to keep your `AccessKey` secret. +Signup or Login to [Picovoice Console](https://console.picovoice.ai/) to get your `AccessKey`. + +## Activity + +Copy your AccessKey into the `ACCESS_KEY` variable in `MainActivity.java` before building the demo. + +This demo is intended for applications that need to do speech enhancement when in focus. diff --git a/lib/android/arm64-v8a/libpv_koala.so b/lib/android/arm64-v8a/libpv_koala.so index 4ac8c75c77c3ea701cfbec1091ab9be67cd23685..bf438280ddeeeb41f83b6671a1d6e7614936bf05 100755 GIT binary patch delta 75947 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 P>5TvPx394pqO<%jd)_!p diff --git a/lib/android/armeabi-v7a/libpv_koala.so b/lib/android/armeabi-v7a/libpv_koala.so index 5d94a2c629e8f562be29b9d36dfd84225c7d7817..8db97e65b8296fc2f0a9e3721c26047d4147a0b2 100755 GIT binary patch delta 33740 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">Xfx9p31R#>56SZfReYYi}LOwPeqsPqm(Z2 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 T2;b{$jh{$Mt3Uw+P6}lBv7+|YI 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

|;FcLesO8pZplLgJ^W{v)Ur3bVAI;@s=wG7ZdZJ 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 diff --git a/lib/android/x86_64/libpv_koala.so b/lib/android/x86_64/libpv_koala.so index b6c525fc9c7b4f732a3057f027b6367c56d55a6d..6de7777aac1d31028c98e5cd49b73e225efe326f 100755 GIT binary patch delta 71635 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

*wunyLN?d`+DUW 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 diff --git a/resources/lint/spell-check/.cspell.json b/resources/lint/spell-check/.cspell.json index bc2ded3..d2a78d0 100644 --- a/resources/lint/spell-check/.cspell.json +++ b/resources/lint/spell-check/.cspell.json @@ -34,6 +34,20 @@ "**/*.storyboard", "**/*.pbxproj", "**/*.xcscheme", - "**/*.m" + "**/*.m", + "../../../lib/ios/**/*", + + // java + "**/build.gradle", + "**/gradle-wrapper.properties", + "**/gradle.properties", + "**/gradlew", + "**/gradlew.bat", + "**/proguard-rules.pro", + + // android + "**/AndroidManifest.xml", + "**/activity_main.xml", + "**/koala_activity_demo.xml" ] } diff --git a/resources/lint/spell-check/dict.txt b/resources/lint/spell-check/dict.txt index 5ee4d35..57768f3 100644 --- a/resources/lint/spell-check/dict.txt +++ b/resources/lint/spell-check/dict.txt @@ -1,11 +1,10 @@ -LPWSTR -MODLE -Makefiles aarch +androidx armv astype calcsize camelcase +compat copywasm denoising downsample @@ -17,10 +16,14 @@ hanning iife irfft jetson +koalaactivitydemo koalafied libpv linalg +LPWSTR +Makefiles malloc +MODLE ndarray numpy outf @@ -37,6 +40,7 @@ rfft rfftfreq signup sqrtf +styleable wargv wchars xcworkspace