Strojový překlad · Anglický originál

Začínáme - Android

speech-android poskytuje zpracování řeči zařízení Android pomocí ONNX Runtime. Plynovod běží VAD + STT + TTS s podporou barge-, plně offline po stažení modelu.

Požadavky

Stáhněte si předkonstruovanou demo aplikaci a okamžitě to zkuste:

Závislá závislost na nosnicích

Přidat SDK do vašeho build.gradle.kts:

implementation("audio.soniqo:speech:0.0.20")

Rychlý start

val modelDir = ModelManager.ensureModels(context)
val pipeline = SpeechPipeline(SpeechConfig(modelDir = modelDir))
pipeline.events.collect { event ->
    when (event) {
        is SpeechEvent.TranscriptionCompleted -> println(event.text)
        is SpeechEvent.ResponseDone -> pipeline.resumeListening()
        else -> {}
    }
}
pipeline.start()
pipeline.pushAudio(samples) // 16kHz mono float32
Důležité

Výchozí modely automaticky stahují z HuggingFace při prvním použití (~ 500 MB celkem). Po počátečním stahování je veškerý inference plně offline.

Detekce konce-of-otočení

Povolit Smart Turn v3.2, kdy by se měla pauza VAD považovat za otázku, spíše než za bezprostřední cílový bod. Skóruje posledních osm sekund aktuálního otáčení jednou po každé potvrzené pauze; skóre pod prahem udržuje stejný směr otevřený, zatímco maximální mlčení cap zaručuje konečný cílový bod

val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
    SpeechConfig(
        modelDir = modelDir,
        enableSmartTurn = true,
        turnCompletionThreshold = 0.5f,
        turnCompletionMaxSilenceSec = 2.0f,
    )
)

Tento opt- in přidává jeden přišpendlený 11.1 MB int8 model; inference zůstává plně offline. Smart Turn byl vytvořen Pipecat / Denní a je distribuován pod BSD-2-Clause.

Systémový hlasový vstup (Rozpoznávací služba)

SDK přepravuje readymade SpeechRecognitionService které se zapojí do rámce Android SpeechRecognizer API - žádný kód pro zápis. Jakmile je vaše aplikace zvolena jako výchozí hlasový rozpoznávač, každá třetí strana aplikace volá SpeechRecognizer.createSpeechRecognizer(context) (bez ComponentName) dostane plně na-zařízení STT přes potrubí.

1. Declare RECORD_AUDIO a služby v AndroidManifest.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application>
    <service
        android:name="audio.soniqo.speech.service.SpeechRecognitionService"
        android:exported="true"
        android:permission="android.permission.RECORD_AUDIO">
        <intent-filter>
            <action android:name="android.speech.RecognitionService" />
        </intent-filter>
        <meta-data
            android:name="android.speech"
            android:resource="@xml/recognition_service" />
    </service>
</application>

2. Přidat app/src/main/res/xml/recognition_service.xml:

<?xml version="1.0" encoding="utf-8"?>
<recognition-service xmlns:android="http://schemas.android.com/apk/res/android" />

3. Nastavit službu jako výchozí systém (Nastavení → Systém → Jazyky a vstup → Picker hlasu na skladě Android, nebo přes adb):

adb shell settings put secure voice_recognition_service \
  your.package/audio.soniqo.speech.service.SpeechRecognitionService

4. Ověřit spuštěním demo aplikace Zkouška rozpoznávání obrazovka, která volá SpeechRecognizer.createSpeechRecognizer(ctx) (bez komponentu) a zaznamenává každý rámcový call back - užitečné pro potvrzení vázacího round-trip bez nutnosti logcat.

Servisní nástroje onCheckRecognitionSupport (API 33+) vrácení 27 BCP-47 jazyky Parakeet TDT v3 kryty, označené installedOnDeviceLanguage pokud jsou přítomny modely (nebo pendingOnDeviceLanguage při stahování). Audio zaměření je získáno s AUDIOFOCUS_GAIN_TRANSIENT po dobu trvání zasedání.

Caveat

Gboard, Samsung Keyboard, a Google Assistant svazovat své vlastní rozpoznávače a přeskočit výchozí systém. Apps, které explicitně volat rámec SpeechRecognizer API (nebo postavit vlastní UI na to) jsou ty, které proudí přes vaše služby.

Modely

Všechny modely běží přes ONNX Runtime s NNAPI akcelerací. INT8 kvantifikován ve výchozím nastavení.

VzorÚkolVelikost
Parakeet TDT v3 (INT8)Speech-to-Text (114 jazyků)891 MB
Kokoro-82M (INT8)Učebnicový projev (8 jazyků)330 MB
Silero VAD v5Detekce hlasové aktivity2 MB
DeepFilterNet3Zrušení hluku8 MB

Zdroj: github.com /soniqo/speech-android

Další kroky