AAR build+publish
This commit is contained in:
parent
8a64ed2a1e
commit
62effd9acb
17
.github/actions/upload-release-asset/action.yml
vendored
17
.github/actions/upload-release-asset/action.yml
vendored
@ -19,10 +19,6 @@ inputs:
|
|||||||
description: "Tag of release to check artifacts under"
|
description: "Tag of release to check artifacts under"
|
||||||
required: false
|
required: false
|
||||||
default: "v0.10.0-alpha.7"
|
default: "v0.10.0-alpha.7"
|
||||||
should-create-release:
|
|
||||||
description: "Whether this action should automatically create a release for the given tag if one doesn't already exist"
|
|
||||||
required: false
|
|
||||||
default: false
|
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
steps:
|
steps:
|
||||||
@ -51,7 +47,6 @@ runs:
|
|||||||
owner=$(echo "${{inputs.repo}}" | cut -f1 -d/)
|
owner=$(echo "${{inputs.repo}}" | cut -f1 -d/)
|
||||||
repo=$(echo "${{inputs.repo}}" | cut -f2 -d/)
|
repo=$(echo "${{inputs.repo}}" | cut -f2 -d/)
|
||||||
tag="${{ inputs.release-tag }}"
|
tag="${{ inputs.release-tag }}"
|
||||||
should_create="${{ inputs.should-create-release }}"
|
|
||||||
|
|
||||||
GH_REPO="https://api.github.com/repos/${owner}/${repo}"
|
GH_REPO="https://api.github.com/repos/${owner}/${repo}"
|
||||||
|
|
||||||
@ -75,21 +70,9 @@ runs:
|
|||||||
response=$(curl -sH "$AUTH" $GH_TAGS)
|
response=$(curl -sH "$AUTH" $GH_TAGS)
|
||||||
eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=')
|
eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=')
|
||||||
[ "$id" ] || {
|
[ "$id" ] || {
|
||||||
# If release does not exist, create it
|
|
||||||
if [[ "$should_create" == "true" ]]; then
|
|
||||||
echo "Tag does not have corresponding release, creating release for tag: $tag..."
|
|
||||||
response=$(curl -X POST -sH "$AUTH" -H "Content-Type: application/json" "${GH_REPO}/releases" -d '{"tag_name":"'"$tag"'","name":"Coqui STT '"$tag"'","prerelease":true}')
|
|
||||||
eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=')
|
|
||||||
[ "$id" ] || {
|
|
||||||
echo "Error: Could not create release for tag: $tag"
|
|
||||||
echo "$response" | awk 'length($0)<100' >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
else
|
|
||||||
echo "Error: Could not find release for tag: $tag"
|
echo "Error: Could not find release for tag: $tag"
|
||||||
echo "$response" | awk 'length($0)<100' >&2
|
echo "$response" | awk 'length($0)<100' >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Upload assets
|
# Upload assets
|
||||||
|
193
.github/workflows/build-and-test.yml
vendored
193
.github/workflows/build-and-test.yml
vendored
@ -23,6 +23,57 @@ defaults:
|
|||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
jobs:
|
jobs:
|
||||||
|
create-release:
|
||||||
|
name: "Create release for tag"
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
outputs:
|
||||||
|
release-tag: ${{ steps.check-version.outputs.release-tag }}
|
||||||
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.8
|
||||||
|
- name: Check VERSION file matches pushed Git tag and check if prerelease
|
||||||
|
id: check-version
|
||||||
|
run: |
|
||||||
|
set -xe
|
||||||
|
if [[ "${{ startsWith(github.ref, 'refs/tags/') }}" != "true" ]]; then
|
||||||
|
echo "Should never happen (this job only runs on tag pushes)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
VERSION="v$(cat VERSION)"
|
||||||
|
if [[ "${{ github.ref }}" != "refs/tags/${VERSION}" ]]; then
|
||||||
|
echo "Pushed tag does not match VERSION file. Aborting release."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Tag for this release (version with leading v)
|
||||||
|
tag=$(echo "${{ github.ref }}" | sed -e 's|^refs/tags/||')
|
||||||
|
echo ::set-output name=release-tag::${tag}
|
||||||
|
|
||||||
|
# Version without leading v
|
||||||
|
version=$(cat VERSION)
|
||||||
|
echo ::set-output name=version::${version}
|
||||||
|
|
||||||
|
# Is this a prerelease or not?
|
||||||
|
cat <<EOF | python - "${{ github.ref }}"
|
||||||
|
import sys
|
||||||
|
import semver
|
||||||
|
ref = sys.argv[1]
|
||||||
|
prefix = "refs/tags/v"
|
||||||
|
assert ref.startswith(prefix)
|
||||||
|
parsed = semver.parse_version_info(ref[len(prefix):])
|
||||||
|
print("::set-output name=is-prerelease::{}".format("true" if parsed.prerelease else "false"))
|
||||||
|
EOF
|
||||||
|
- uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
body_path: RELEASE_NOTES.md
|
||||||
|
prerelease: ${{ steps.check-version.outputs.prerelease }}
|
||||||
|
name: ${{ format('Coqui STT {0}', steps.check-version.outputs.version) }}
|
||||||
# Linux jobs
|
# Linux jobs
|
||||||
swig_Windows_crosscompiled:
|
swig_Windows_crosscompiled:
|
||||||
name: "Lin|Build SWIG for Windows"
|
name: "Lin|Build SWIG for Windows"
|
||||||
@ -779,6 +830,7 @@ jobs:
|
|||||||
twine-upload-training:
|
twine-upload-training:
|
||||||
name: "Upload STT training packages to PyPI"
|
name: "Upload STT training packages to PyPI"
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
needs: [create-release]
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@ -809,13 +861,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: '' # use filename
|
name: '' # use filename
|
||||||
path: "dist/*.whl"
|
path: "dist/*.whl"
|
||||||
release-tag: ${{ steps.get-tag.outputs.tag }}
|
release-tag: ${{ needs.create-release.outputs.release-tag }}
|
||||||
should-create-release: true
|
|
||||||
twine-upload-stt:
|
twine-upload-stt:
|
||||||
name: "Upload STT packages to PyPI"
|
name: "Upload STT packages to PyPI"
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
needs: [build-python-Linux, build-python-macOS, build-python-Windows, build-python-LinuxArmv7, build-python-LinuxAarch64]
|
needs: [create-release, build-python-Linux, build-python-macOS, build-python-Windows, build-python-LinuxArmv7, build-python-LinuxAarch64]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-python@v2
|
- uses: actions/setup-python@v2
|
||||||
@ -889,13 +940,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: '' # use filename
|
name: '' # use filename
|
||||||
path: "*.whl"
|
path: "*.whl"
|
||||||
release-tag: ${{ steps.get-tag.outputs.tag }}
|
release-tag: ${{ needs.create-release.outputs.release-tag }}
|
||||||
should-create-release: true
|
|
||||||
upload-nc-release-assets:
|
upload-nc-release-assets:
|
||||||
name: "Upload native client artifacts to release assets"
|
name: "Upload native client artifacts to release assets"
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
needs: [build-lib_Windows, build-lib_Linux, build-lib_macOS, build-lib_LinuxAarch64, build-lib_LinuxArmv7]
|
needs: [create-release, build-lib_Windows, build-lib_Linux, build-lib_macOS, build-lib_LinuxAarch64, build-lib_LinuxArmv7]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/download-artifact@v2
|
- uses: actions/download-artifact@v2
|
||||||
@ -940,14 +990,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: '' # use filename
|
name: '' # use filename
|
||||||
path: "*.tar.xz"
|
path: "*.tar.xz"
|
||||||
release-tag: ${{ steps.get-tag.outputs.tag }}
|
release-tag: ${{ needs.create-release.outputs.release-tag }}
|
||||||
should-create-release: true
|
|
||||||
- uses: ./.github/actions/upload-release-asset
|
- uses: ./.github/actions/upload-release-asset
|
||||||
with:
|
with:
|
||||||
name: '' # use filename
|
name: '' # use filename
|
||||||
path: "*.zip"
|
path: "*.zip"
|
||||||
release-tag: ${{ steps.get-tag.outputs.tag }}
|
release-tag: ${{ needs.create-release.outputs.release-tag }}
|
||||||
should-create-release: true
|
|
||||||
docker-build:
|
docker-build:
|
||||||
name: "Build Dockerfile.build image"
|
name: "Build Dockerfile.build image"
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
@ -1016,7 +1064,7 @@ jobs:
|
|||||||
name: "Upload coqui_stt_ctcdecoder packages to PyPI"
|
name: "Upload coqui_stt_ctcdecoder packages to PyPI"
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
needs: [build-ctc-decoder-Linux, build-ctc-decoder-macos, build-ctc-decoder-windows]
|
needs: [create-release, build-ctc-decoder-Linux, build-ctc-decoder-macos, build-ctc-decoder-windows]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-python@v2
|
- uses: actions/setup-python@v2
|
||||||
@ -1072,13 +1120,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: '' # use filename
|
name: '' # use filename
|
||||||
path: "*.whl"
|
path: "*.whl"
|
||||||
release-tag: ${{ steps.get-tag.outputs.tag }}
|
release-tag: ${{ needs.create-release.outputs.release-tag }}
|
||||||
should-create-release: true
|
|
||||||
npmjs-publish:
|
npmjs-publish:
|
||||||
name: "Upload STT packages to npmjs.com"
|
name: "Upload STT packages to npmjs.com"
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
needs: [repackage-nodejs-allplatforms]
|
needs: [create-release, repackage-nodejs-allplatforms]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions/setup-node@v2
|
- uses: actions/setup-node@v2
|
||||||
@ -1119,8 +1166,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: '' # use filename
|
name: '' # use filename
|
||||||
path: "*.tgz"
|
path: "*.tgz"
|
||||||
release-tag: ${{ steps.get-tag.outputs.tag }}
|
release-tag: ${{ needs.create-release.outputs.release-tag }}
|
||||||
should-create-release: true
|
|
||||||
# macOS jobs
|
# macOS jobs
|
||||||
swig_macOS:
|
swig_macOS:
|
||||||
name: "Mac|Build SWIG"
|
name: "Mac|Build SWIG"
|
||||||
@ -3363,10 +3409,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: "native_client.tflite.android.armv7.tar.xz"
|
name: "native_client.tflite.android.armv7.tar.xz"
|
||||||
path: ${{ github.workspace }}/artifacts/native_client.tar.xz
|
path: ${{ github.workspace }}/artifacts/native_client.tar.xz
|
||||||
- uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: "libstt.tflite.android.armv7.zip"
|
|
||||||
path: ${{ github.workspace }}/artifacts/libstt.zip
|
|
||||||
tensorflow_opt-AndroidArm64:
|
tensorflow_opt-AndroidArm64:
|
||||||
name: "AndroidArm64|Check TensorFlow cache"
|
name: "AndroidArm64|Check TensorFlow cache"
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
@ -3439,7 +3481,114 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: "native_client.tflite.android.arm64.tar.xz"
|
name: "native_client.tflite.android.arm64.tar.xz"
|
||||||
path: ${{ github.workspace }}/artifacts/native_client.tar.xz
|
path: ${{ github.workspace }}/artifacts/native_client.tar.xz
|
||||||
|
build-lib_Androidx86_64:
|
||||||
|
name: "Androidx86_64|Build libstt+client"
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
needs: [ build-tensorflow-AndroidArm64, tensorflow_opt-AndroidArm64 ]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: ./.github/actions/check_artifact_exists
|
||||||
|
with:
|
||||||
|
name: ${{ needs.tensorflow_opt-AndroidArm64.outputs.cache_key }}.tar.xz
|
||||||
|
path: ${{ github.workspace }}/
|
||||||
|
download: true
|
||||||
|
- run: |
|
||||||
|
tar --skip-old-files -xf ${{ needs.tensorflow_opt-AndroidArm64.outputs.cache_key }}.tar.xz
|
||||||
|
rm ${{ needs.tensorflow_opt-AndroidArm64.outputs.cache_key }}.tar.xz
|
||||||
|
- uses: ./.github/actions/libstt-build
|
||||||
|
with:
|
||||||
|
arch: android-x86_64
|
||||||
|
- run: ./ci_scripts/android-package.sh x86_64
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: "libstt.tflite.android.arm64.zip"
|
name: "native_client.tflite.android.x86_64.tar.xz"
|
||||||
path: ${{ github.workspace }}/artifacts/libstt.zip
|
path: ${{ github.workspace }}/artifacts/native_client.tar.xz
|
||||||
|
build-android-apk-aar:
|
||||||
|
name: "Android|Build AAR+APK"
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
needs: [build-lib_AndroidArmv7, build-lib_AndroidArm64, build-lib_Androidx86_64]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: native_client.tflite.android.armv7.tar.xz
|
||||||
|
path: /tmp/nc
|
||||||
|
- run: |
|
||||||
|
mkdir -p native_client/java/libstt/libs/armeabi-v7a
|
||||||
|
cd /tmp/nc
|
||||||
|
tar xvf native_client.tar.xz
|
||||||
|
mv libstt.so ${CI_TASK_DIR}/native_client/java/libstt/libs/armeabi-v7a/libstt.so
|
||||||
|
rm -f *
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: native_client.tflite.android.arm64.tar.xz
|
||||||
|
path: /tmp/nc
|
||||||
|
- run: |
|
||||||
|
mkdir -p native_client/java/libstt/libs/arm64-v8a
|
||||||
|
cd /tmp/nc
|
||||||
|
tar xvf native_client.tar.xz
|
||||||
|
mv libstt.so ${CI_TASK_DIR}/native_client/java/libstt/libs/arm64-v8a/libstt.so
|
||||||
|
rm -f *
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: native_client.tflite.android.x86_64.tar.xz
|
||||||
|
path: /tmp/nc
|
||||||
|
- run: |
|
||||||
|
mkdir -p native_client/java/libstt/libs/x86_64
|
||||||
|
cd /tmp/nc
|
||||||
|
tar xvf native_client.tar.xz
|
||||||
|
mv libstt.so ${CI_TASK_DIR}/native_client/java/libstt/libs/x86_64/libstt.so
|
||||||
|
rm -f *
|
||||||
|
- name: Use Java 8 instead of Java 11
|
||||||
|
run: echo "JAVA_HOME=$JAVA_HOME_8_X64" >> $GITHUB_ENV
|
||||||
|
# This particular version of CMake confuses Gradle by not being semver.
|
||||||
|
# We're fine with 3.10.2 which is also installed. Keep an eye on the
|
||||||
|
# virtual environments though:
|
||||||
|
# https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md#android
|
||||||
|
- name: Remove CMake 3.18.1-g262b901
|
||||||
|
run: |
|
||||||
|
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --uninstall 'cmake;3.18.1'
|
||||||
|
- run: |
|
||||||
|
make GRADLE="./gradlew " -C native_client/java
|
||||||
|
- run: |
|
||||||
|
make GRADLE="./gradlew " -C native_client/java maven-bundle
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: "app.apk"
|
||||||
|
path: ${{ github.workspace }}/native_client/java/app/build/outputs/apk/release/app*.apk
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: "libstt.aar"
|
||||||
|
path: ${{ github.workspace }}/native_client/java/libstt/build/outputs/aar/libstt*.aar
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: "libstt.maven.zip"
|
||||||
|
path: ${{ github.workspace }}/native_client/java/libstt/build/libstt-*.maven.zip
|
||||||
|
publish-android-aar:
|
||||||
|
name: "Android|Publish AAR"
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
needs: [create-release, build-android-apk-aar]
|
||||||
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: "libstt.aar"
|
||||||
|
path: ${{ github.workspace }}/
|
||||||
|
- run: ls -lh
|
||||||
|
- name: Get tag name
|
||||||
|
id: get-tag
|
||||||
|
run: |
|
||||||
|
tag=$(echo "${{ github.ref }}" | sed -e 's|^refs/tags/||')
|
||||||
|
echo "::set-output name=tag::$tag"
|
||||||
|
- uses: ./.github/actions/upload-release-asset
|
||||||
|
with:
|
||||||
|
name: '' # use filename
|
||||||
|
path: "*.aar"
|
||||||
|
release-tag: ${{ needs.create-release.outputs.release-tag }}
|
||||||
|
0
RELEASE_NOTES.md
Normal file
0
RELEASE_NOTES.md
Normal file
@ -126,7 +126,7 @@ Included are a set of generated Python bindings. After following the above build
|
|||||||
make bindings
|
make bindings
|
||||||
pip install dist/stt-*
|
pip install dist/stt-*
|
||||||
|
|
||||||
The API mirrors the C++ API and is demonstrated in `client.py <python/client.py>`_. Refer to `coqui-stt.h <coqui-stt.h>`_ for documentation.
|
`Reference documentation <python-api>`_ is available for the Python bindings, as well as examples in the `STT-examples repository <https://github.com/coqui-ai/STT-examples>`_ and the `source code for the CLI tool installed alongside the Python bindings <py-api-example>`_.
|
||||||
|
|
||||||
Install NodeJS / ElectronJS bindings
|
Install NodeJS / ElectronJS bindings
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
@ -186,7 +186,7 @@ Cross-building
|
|||||||
RPi3 ARMv7 and LePotato ARM64
|
RPi3 ARMv7 and LePotato ARM64
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
We do support cross-compilation. Please refer to our ``coqui-ai/tensorflow`` fork, where we define the following ``--config`` flags:
|
We support cross-compilation from Linux hosts. The following ``--config`` flags can be specified when building with bazel:
|
||||||
|
|
||||||
* ``--config=rpi3_opt`` for Raspbian / ARMv7
|
* ``--config=rpi3_opt`` for Raspbian / ARMv7
|
||||||
* ``--config=rpi3-armv8_opt`` for ARMBian / ARM64
|
* ``--config=rpi3-armv8_opt`` for ARMBian / ARM64
|
||||||
@ -213,28 +213,8 @@ The path of the system tree can be overridden from the default values defined in
|
|||||||
cd ../STT/native_client
|
cd ../STT/native_client
|
||||||
make TARGET=<system> stt
|
make TARGET=<system> stt
|
||||||
|
|
||||||
Android devices support
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
Using the library from Android project
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Due to the discontinuation of Bintray JCenter we do not have pre-built Android packages published for now. We are working to move to Maven Central and will update this section when it's available.
|
|
||||||
|
|
||||||
.. We provide uptodate and tested ``libstt`` usable as an ``AAR`` package,
|
|
||||||
for Android versions starting with 7.0 to 11.0. The package is published on
|
|
||||||
`JCenter <https://bintray.com/coqui/ai.coqui.stt/libstt>`_,
|
|
||||||
and the ``JCenter`` repository should be available by default in any Android
|
|
||||||
project. Please make sure your project is setup to pull from this repository.
|
|
||||||
You can then include the library by just adding this line to your
|
|
||||||
``gradle.build``, adjusting ``VERSION`` to the version you need:
|
|
||||||
|
|
||||||
.. code-block::
|
|
||||||
|
|
||||||
implementation 'stt.coqui.ai:libstt:VERSION@aar'
|
|
||||||
|
|
||||||
Building ``libstt.so`` for Android
|
Building ``libstt.so`` for Android
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
----------------------------------
|
||||||
|
|
||||||
Prerequisites
|
Prerequisites
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
@ -13,8 +13,8 @@ Creating a model instance and loading model
|
|||||||
:start-after: sphinx-doc: c_ref_model_start
|
:start-after: sphinx-doc: c_ref_model_start
|
||||||
:end-before: sphinx-doc: c_ref_model_stop
|
:end-before: sphinx-doc: c_ref_model_stop
|
||||||
|
|
||||||
Deploying trained model
|
Transcribing audio with the loaded model
|
||||||
-----------------------
|
----------------------------------------
|
||||||
|
|
||||||
.. literalinclude:: ../native_client/client.cc
|
.. literalinclude:: ../native_client/client.cc
|
||||||
:language: c
|
:language: c
|
||||||
|
@ -14,6 +14,7 @@ You can deploy 🐸STT models either via a command-line client or a language bin
|
|||||||
|
|
||||||
* :ref:`The Python package + language binding <py-usage>`
|
* :ref:`The Python package + language binding <py-usage>`
|
||||||
* :ref:`The Node.JS package + language binding <nodejs-usage>`
|
* :ref:`The Node.JS package + language binding <nodejs-usage>`
|
||||||
|
* :ref:`The Android libstt AAR package <android-usage>`
|
||||||
* :ref:`The command-line client <cli-usage>`
|
* :ref:`The command-line client <cli-usage>`
|
||||||
* :ref:`The native C API <c-usage>`
|
* :ref:`The native C API <c-usage>`
|
||||||
|
|
||||||
@ -133,6 +134,31 @@ See the `release notes <https://github.com/coqui-ai/STT/releases>`_ to find whic
|
|||||||
|
|
||||||
See the :ref:`TypeScript client <js-api-example>` for an example of how to use the bindings programatically.
|
See the :ref:`TypeScript client <js-api-example>` for an example of how to use the bindings programatically.
|
||||||
|
|
||||||
|
.. _android-usage:
|
||||||
|
|
||||||
|
Using the Android AAR libstt package
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
A pre-built ``libstt`` Android AAR package can be downloaded from GitHub Releases, for Android versions 7.0+. In order to use it in your Android application, first modify your app's ``build.gradle`` file to add a local dir as a repository. In the ``repository`` section, add the following definition:
|
||||||
|
|
||||||
|
.. code-block:: groovy
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
flatDir {
|
||||||
|
dirs 'libs'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Then, create a libs directory inside your app's folder, and place the libstt AAR file there. Finally, add the following dependency declaration in your app's ``build.gradle`` file:
|
||||||
|
|
||||||
|
.. code-block:: groovy
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation fileTree(dir: 'libs', include: ['*.aar'])
|
||||||
|
}
|
||||||
|
|
||||||
|
This will link all .aar files in the ``libs`` directory you just created, including libstt.
|
||||||
|
|
||||||
.. _cli-usage:
|
.. _cli-usage:
|
||||||
|
|
||||||
Using the command-line client
|
Using the command-line client
|
||||||
|
@ -13,8 +13,8 @@ Creating a model instance and loading model
|
|||||||
:start-after: sphinx-doc: csharp_ref_model_start
|
:start-after: sphinx-doc: csharp_ref_model_start
|
||||||
:end-before: sphinx-doc: csharp_ref_model_stop
|
:end-before: sphinx-doc: csharp_ref_model_stop
|
||||||
|
|
||||||
Deploying trained model
|
Transcribing audio with the loaded model
|
||||||
-----------------------
|
----------------------------------------
|
||||||
|
|
||||||
.. literalinclude:: ../native_client/dotnet/STTConsole/Program.cs
|
.. literalinclude:: ../native_client/dotnet/STTConsole/Program.cs
|
||||||
:language: csharp
|
:language: csharp
|
||||||
|
@ -13,8 +13,8 @@ Creating a model instance and loading model
|
|||||||
:start-after: sphinx-doc: java_ref_model_start
|
:start-after: sphinx-doc: java_ref_model_start
|
||||||
:end-before: sphinx-doc: java_ref_model_stop
|
:end-before: sphinx-doc: java_ref_model_stop
|
||||||
|
|
||||||
Deploying trained model
|
Transcribing audio with the loaded model
|
||||||
-----------------------
|
----------------------------------------
|
||||||
|
|
||||||
.. literalinclude:: ../native_client/java/app/src/main/java/ai/coqui/sttexampleapp/STTActivity.java
|
.. literalinclude:: ../native_client/java/app/src/main/java/ai/coqui/sttexampleapp/STTActivity.java
|
||||||
:language: java
|
:language: java
|
||||||
|
@ -15,8 +15,8 @@ Creating a model instance and loading model
|
|||||||
:start-after: sphinx-doc: js_ref_model_start
|
:start-after: sphinx-doc: js_ref_model_start
|
||||||
:end-before: sphinx-doc: js_ref_model_stop
|
:end-before: sphinx-doc: js_ref_model_stop
|
||||||
|
|
||||||
Deploying trained model
|
Transcribing audio with the loaded model
|
||||||
-----------------------
|
----------------------------------------
|
||||||
|
|
||||||
.. literalinclude:: ../native_client/javascript/client.ts
|
.. literalinclude:: ../native_client/javascript/client.ts
|
||||||
:language: javascript
|
:language: javascript
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
.. _python-api:
|
||||||
|
|
||||||
Python
|
Python
|
||||||
======
|
======
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ Creating a model instance and loading model
|
|||||||
:start-after: sphinx-doc: python_ref_model_start
|
:start-after: sphinx-doc: python_ref_model_start
|
||||||
:end-before: sphinx-doc: python_ref_model_stop
|
:end-before: sphinx-doc: python_ref_model_stop
|
||||||
|
|
||||||
Deploying trained model
|
Transcribing audio with the loaded model
|
||||||
-----------------------
|
----------------------------------------
|
||||||
|
|
||||||
.. literalinclude:: ../native_client/python/client.py
|
.. literalinclude:: ../native_client/python/client.py
|
||||||
:language: python
|
:language: python
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package ai.coqui.sttexampleapp
|
package ai.coqui.sttexampleapp;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.test.InstrumentationRegistry;
|
import android.support.test.InstrumentationRegistry;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package ai.coqui.sttexampleapp
|
package ai.coqui.sttexampleapp;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ public class STTModel {
|
|||||||
private SWIGTYPE_p_ModelState _msp;
|
private SWIGTYPE_p_ModelState _msp;
|
||||||
|
|
||||||
private void evaluateErrorCode(int errorCode) {
|
private void evaluateErrorCode(int errorCode) {
|
||||||
STT_Error_Codes code = STT_Error_Codes.swigToEnum(errorCode);
|
Error_Codes code = Error_Codes.swigToEnum(errorCode);
|
||||||
if (code != STT_Error_Codes.ERR_OK) {
|
if (code != Error_Codes.ERR_OK) {
|
||||||
throw new RuntimeException("Error: " + impl.ErrorCodeToErrorMessage(errorCode) + " (0x" + Integer.toHexString(errorCode) + ").");
|
throw new RuntimeException("Error: " + impl.ErrorCodeToErrorMessage(errorCode) + " (0x" + Integer.toHexString(errorCode) + ").");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user