
SpokeStackは、Androidのモバイル音声インターフェイスのオールインワンソリューションです。音声アクティビティ検出、ウェイクワード検出、音声認識、自然言語理解(NLU)、音声合成(TTS)など、音声処理パズルのすべての部分を提供します。デフォルトの構成(新しいAndroidデバイス上)では、TTSを除くすべてがモバイルデバイスで直接発生します。クラウドとの通信は、より速い結果とプライバシーの向上を意味します。
そして、Androidがサポートする唯一のプラットフォームではありません!
SpokeStack.ioで無料アカウントを作成すると、アプリにコードを追加せずに独自のNLUモデルをトレーニングし、TTSをテストできます。あなたのためにカスタムウェイクワードとTTSの音声をトレーニングして、アプリの声がユニークで記憶に残ることを保証することもできます。
簡単な紹介については、読んでくださいが、より詳細なガイドについては、以下を参照してください。
注:SpokeStackは以前はJCenterでホストされていましたが、中止の発表以来、Maven Centralに配布を移動しました。ルートレベルのbuild.gradleファイルには、バージョンにアクセスするために、そのrepositoriesブロックにmavenCentral()が含まれていることを確認してください> = 11.0.2。
SpokeStackのマニフェストにリストされている最小Android SDKバージョンは8です。これは、Wake Wordの検出と音声認識を実行するために必要なのはそれだけだからです。他の機能を使用するには、少なくともAPIレベル21をターゲットにすることが最善です。
TTSの再生にexoplayerを含める場合(以下を参照)、APIレベル24より古いAndroidのバージョンで実行するのに苦労する可能性があります。この問題に遭遇した場合は、 gradle.propertiesファイルに次の行を追加してみてください。
android.enableDexingArtifactTransform=false
アプリのbuild.gradleに以下を追加します:
android {
// ...
compileOptions {
sourceCompatibility JavaVersion . VERSION_1_8
targetCompatibility JavaVersion . VERSION_1_8
}
}
// ...
dependencies {
// ...
// make sure to check the badge above or "releases" on the right for the
// latest version!
implementation ' io.spokestack:spokestack-android:11.5.2 '
// for TensorFlow Lite-powered wakeword detection and/or NLU, add this one too
implementation ' org.tensorflow:tensorflow-lite:2.6.0 '
// for automatic playback of TTS audio
implementation ' androidx.media:media:1.3.0 '
implementation ' com.google.android.exoplayer:exoplayer-core:2.14.0 '
// if you plan to use Google ASR, include these
implementation ' com.google.cloud:google-cloud-speech:1.22.2 '
implementation ' io.grpc:grpc-okhttp:1.28.0 '
// if you plan to use Azure Speech Service, include these, and
// note that you'll also need to add the following to your top-level
// build.gradle's `repositories` block:
// maven { url 'https://csspeechstorage.blob.core.windows.net/maven/' }
implementation ' com.microsoft.cognitiveservices.speech:client-sdk:1.9.0 '
}詳細については、QuickStartガイドを参照してください。ただし、セットアップの30秒バージョンは次のとおりです。
RECORD_AUDIO許可を要求する必要があります。この例については、スケルトンプロジェクトをご覧ください。 INTERNET許可も必要ですが、デフォルトでは図書館のマニフェストに含まれています。Activityで次のコードをどこかに追加します。 private lateinit var spokestack : Spokestack
// ...
spokestack = Spokestack . Builder ()
.setProperty( " wake-detect-path " , " $cacheDir /detect.tflite " )
.setProperty( " wake-encode-path " , " $cacheDir /encode.tflite " )
.setProperty( " wake-filter-path " , " $cacheDir /filter.tflite " )
.setProperty( " nlu-model-path " , " $cacheDir /nlu.tflite " )
.setProperty( " nlu-metadata-path " , " $cacheDir /metadata.json " )
.setProperty( " wordpiece-vocab-path " , " $cacheDir /vocab.txt " )
.setProperty( " spokestack-id " , " your-client-id " )
.setProperty( " spokestack-secret " , " your-secret-key " )
// `applicationContext` is available inside all `Activity`s
.withAndroidContext(applicationContext)
// see below; `listener` here inherits from `SpokestackAdapter`
.addListener(listener)
.build()
// ...
// starting the pipeline makes Spokestack listen for the wakeword
spokestack.start()この例は、アプリのキャッシュディレクトリにウェイクワードとNLUモデルを保存していることを前提としています。繰り返しますが、これらのファイルをアセットバンドルからこのディレクトリに減圧する例については、Skeletonプロジェクトを参照してください。
デモ「SpokeStack」ウェイクワードを使用するには、TensorFlow Liteモデルをダウンロードしてください。エンコード|フィルター
まだ気にしたくない場合は、Wakeword検出とNLUを無効にしてください。上記のすべてのファイルパスを除外できます。
spokestack = Spokestack . Builder ()
.withoutWakeword()
.withoutNlu()
// ...
.build()この場合、上記のようにSpokeStack start()必要がありますが、押されたときにspokestack.activate()を呼び出す場所にボタンを作成する必要があります。これにより、ユーザーのスピーチを転写するASRが開始されます。
あるいは、SpokeStackを設定して、音声パイプラインドキュメントで説明されているように、非デフォルト音声パイプラインプロファイルを使用して、音声を検出するときはいつでもASRを起動できます。この場合、 VADTriggerAndroidASRプロファイルが必要です。
// replace
.withoutWakeword()
// with
.withPipelineProfile( " io.spokestack.spokestack.profile.VADTriggerAndroidASR " )また、セットアップ中のaddListener()ラインも注意してください。音声処理は、バックグラウンドスレッドで継続的に行われるため、アプリはユーザーがいつ話をしたかを調べる方法が必要です。重要なイベントは、イベントを介してSpokestackAdapterのサブクラスに配信されます。サブクラスは、次のイベント方法の多くを好きなだけオーバーライドできます。実装しないことを選択することは何も壊れません。これらのイベントを受け取らないだけです。
speechEvent(SpeechContext.Event, SpeechContext) :これは、ASRがアクティブ化/非アクティブ化された通知からユーザースピーチの部分的および完全なトランスクリプトまで、すべての通知からすべてのスピーチパイプラインからのイベントを伝えます。nluResult(NLUResult) :NLUを有効にすると、ユーザースピーチは分類のためにNLUを介して自動的に送信されます。その分類の結果が、アプリが次に何をすべきかを決定するのに役立つようにします。ttsEvent(TTSEvent) :TTSの再生を自分で管理している場合、合成したスピーチがいつプレイする準備ができているかを知りたいです( AUDIO_AVAILABLEイベント)。そうでなくても、アプリが応答を読み取った後にマイクを自動的に再アクティブ化する場合、 PLAYBACK_COMPLETEイベントが役立つ場合があります。trace(SpokestackModule, String) :これは、すべてのSpokeStackモジュールからのログ/トレースメッセージを組み合わせます。一部のモジュールには、独自のイベントメソッドのトレースイベントが含まれていますが、これらの各イベントもここに送信されます。error(SpokestackModule, Throwable) :これにより、すべてのSpokeStackモジュールのエラーが組み合わされます。一部のモジュールには、独自のイベントメソッドのエラーイベントが含まれていますが、これらの各イベントもここに送信されます。QuickStartガイドには、これらのメソッドのほとんどのサンプル実装が含まれています。
前述したように、NLUが有効になっている場合、分類は自動的に処理されるため、SpokeStackの実行中に知っておくべき主な方法は次のとおりです。
start()/stop() :パイプラインを開始/停止します。実行中、SpokeStackはマイクを使用して、ウェイクワードが無効になっていない限り、アプリのウェイクワードをリッスンします。その場合、ASRは別の方法でアクティブ化する必要があります。 SpokeStackが不要になったとき(またはアプリが一時停止されたとき)、リソースを解放するためにパイプラインを停止する必要があります。activate()/deactivate() :ASRをアクティブ化/非アクティブ化します。synthesize(SynthesisRequest) :テキストをSpokeStackのCloud TTSサービスに送信して、オーディオとして合成します。デフォルトの構成では、このオーディオは利用可能なときに自動的に再生されます。 Mavenは建物/展開に使用され、パッケージはMaven Centralでホストされています。
このパッケージでは、Android NDKをインストールし、 ANDROID_HOMEおよびANDROID_NDK_HOME変数を設定する必要があります。 OSXでは、 ANDROID_HOMEは通常~/Library/Android/sdkに設定され、 ANDROID_NDK_HOME通常~/Library/Android/sdk/ndk/<version>に設定されます。
ANDROID_NDK_HOME 、ローカルMaven settings.xmlファイルでandroid.ndk.pathプロパティとして指定することもできます。
mvn test jacoco:reportmvn checkstyle:checkSonatype/Maven Central Credentialsがユーザーsettings.xml (通常~/.m2/settings.xml )にあることを確認してください。
< servers >
< server >
< id >ossrh</ id >
< username >sonatype-username</ username >
< password >sonatype-password</ password >
</ server >
</ servers >非マスターブランチで、次のコマンドを実行します。これにより、新しいバージョンのバージョン番号とタグを入力し、タグをGitHubにプッシュし、パッケージをSonatypeリポジトリに展開するように求められます。
mvn release:clean release:prepare release:performMavenの目標は、ファイルを2回アップロードしようとするバグのために失敗する可能性がありますが、リリースはまだ発生しています。
GitHubの新しいブランチのプル要求を作成およびマージして、タグを編集してリリースノートを更新してプロセスを完了します。
リリースの詳細については、http://maven.apache.org/maven-release/maven-release-plugin/を参照してください。
Copyright 2021 Spokestack、Inc。
Apacheライセンス、バージョン2.0(「ライセンス」)に基づいてライセンスされています。ライセンスに準拠している場合を除き、このファイルを使用することはできません。ライセンスのコピーを取得できます
http://www.apache.org/licenses/LICENSE-2.0
適用法で要求されていないか、書面で合意されていない限り、ライセンスに基づいて配布されたソフトウェアは、明示または黙示のいずれかの保証または条件なしに、「現状のまま」に基づいて配布されます。ライセンスに基づく権限と制限を管理する特定の言語のライセンスを参照してください。