Maskinöversättning · Engelskt original

Komma igång - Android

speech-android ger på-enhet talbehandling för Android med ONNX Runtime. Rörledningen kör VAD + STT + TTS with barge-in support, helt offline after model download.

Krav

Ladda ner den förbyggda demo-appen för att prova den omedelbart:

Gradle beroende

Lägg till SDK till din build.gradle.kts:

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

Snabbstart

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
Viktigt

Standardmodellerna auto-download från HuggingFace vid första användning (~ 500 MB totalt). Efter den första nedladdningen körs all inferens helt offline.

End-of-turn detektion

Aktivera Smart Turn v3.2 när en VAD paus bör behandlas som en fråga snarare än en omedelbar slutpunkt. Det gör de sista åtta sekunderna av den aktuella vändningen en gång efter varje bekräftad paus; en poäng under tröskeln håller samma svängning öppen, medan den maximala tystnadslocket garanterar en eventuell slutpunkt.

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

Denna opt-in lägger till en pinned 11.1 MB int8 modell; slutsatsen förblir helt offline. Smart Turn skapades av Pipecat/Daily och distribueras under BSD-2-Clause.

Systemröstinmatning (RecognitionService)

SDK levererar en färdig tillverkad SpeechRecognitionService som pluggar in Android ramverk SpeechRecognizer API - ingen kod för att skriva. När din app väljs som standardröstigenkännare, någon tredjepartsapp som ringer SpeechRecognizer.createSpeechRecognizer(context) (ingen ComponentName) får helt på-enhet STT genom din pipeline.

1. Declare RECORD_AUDIO och tjänsten i 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. Lägg till 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. Ställ in tjänsten som systemets standard (Inställningar → System → Språk & input → Röstinmatningsplockare på lager Android, eller via adb):

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

4. Verifiera genom att köra demo-appens Recognizer-test -skärm, som kallar SpeechRecognizer.createSpeechRecognizer(ctx) (ingen komponent) och loggar in varje ramuppmaning - användbar för att bekräfta binderr rundturen utan att behöva logkat.

Tjänsten implementerar onCheckRecognitionSupport (API 33+) som returnerar 27 BCP-47 språk Parakeet TDT v3 täcker, markerade installedOnDeviceLanguage När modeller är närvarande (eller pendingOnDeviceLanguage medan de laddar ner). Audio fokus förvärvas med AUDIOFOCUS_GAIN_TRANSIENT under en sessions varaktighet.

Caveat

Gboard, Samsung Keyboard och Google Assistant buntar sina egna kännare och hoppar över systemets standard. Appar som uttryckligen kallar ramen SpeechRecognizer API (eller bygger sitt eget UI ovanpå det) är de som strömmar genom din tjänst.

Modeller

Alla modeller körs via ONNX Runtime med NNAPI acceleration. INT8 kvantiserad som standard.

ModellUppgifterStorlek
Parakeet TDT v3 (INT8)Tal-to-Text (114 språk)891 MB
Kokoro-82M (INT8)Text-till-tal (8 språk)330 MB
Silero VAD v5Detektering av röstaktivitet2 MB
DeepFilterNet3Buller avbokning8 MB

Källa: github.com/soniqo/speech-android

Nästa steg