Konekäännös · Englanninkielinen alkuperäinen

Aloittaminen Android

speech-android tarjoaa laitteen puheenkäsittelyn Android käyttäen ONNX Runtime.Puhelin kulkee VAD + STT + TTS proomutuki, täysin pois päältä mallin latauksen jälkeen.

Vaatimukset

Lataa valmiiksi rakennettu demo sovellus kokeilla sitä välittömästi:

Gradlen riippuvuus

Lisää SDK omaan build.gradle.kts:

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

Pikakäynnistys

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
Tärkeää

Oletusmallit ladataan automaattisesti HuggingFace ensimmäisessä käytössä (~500 MB yhteensä). Alun latauksen jälkeen kaikki päätelmät toimivat täysin offline-tilassa.

Kääntyneisyyden toteaminen

Käytä Smart Turn v3.2 kun VAD -taukoa on käsiteltävä kysymyksenä eikä välittömänä päätepisteenä. Se tekee pisteet nykyisen käännöksen viimeiset kahdeksan sekuntia kerran kunkin vahvistetun tauon jälkeen; pisteet kynnyksen alapuolella pitävät saman käännön auki, kun taas maksimihiljaisuuskatto takaa lopullisen päätepisteen.

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

Tämä opt-in lisää yhden naulatun 11,1 MB int8 -mallin. Päätelmä pysyy täysin offline-tilassa. Smart Turn on luotu pipecat/Pipecat / Daily -mallin avulla, ja se jakautuu alle BSD-2-Clause.

Järjestelmän äänisyöte (Tunnistuspalvelu)

SDK-alus on valmis. SpeechRecognitionService joka kytkee Android... SpeechRecognizer API . Ei koodia kirjoitettavaksi. Kun sovelluksesi on valittu oletusäänentunnistimeksi, mikä tahansa kolmannen osapuolen sovellus soittaa SpeechRecognizer.createSpeechRecognizer(context) (ei ComponentName) saa täysin päälle-laite STT kautta putkisto.

1. Julista RECORD_AUDIO ja palvelu 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. Lisää 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. Aseta palvelu järjestelmän oletusarvoksi (Asetukset → Järjestelmä → Kielet ja syöte → Äänisyötön kerääjä varastossa Android tai adb:n kautta):

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

4. Varmistamalla demosovelluksen Recognizer test screen, joka kutsuu SpeechRecognizer.createSpeechRecognizer(ctx) (ei komponenttia) ja kirjautuu jokaiseen kehystoistoon.

Palvelussa käytetään onCheckRecognitionSupport (API 33+) palauttamalla 27 BCP-47 kielet Parakeet TDT v3 kattaa, merkitty installedOnDeviceLanguage kun malleja on olemassa (tai pendingOnDeviceLanguage kun ne ladataan uudelleen).Äänen tarkennetaan AUDIOFOCUS_GAIN_TRANSIENT istunnon ajaksi.

Caveat

Gboard, Samsung Näppäimistö ja Google Assistant nippuvat omat tunnistimet ja ohittavat järjestelmän oletuksen. Sovellukset, jotka nimenomaisesti kutsuvat kehystä SpeechRecognizer API (tai rakentavat oman käyttöliittymänsä päälle) ovat niitä, jotka kulkevat palvelusi läpi.

Mallit

Kaikki mallit suoritetaan ONNX Runtime -menetelmällä, jossa NNAPI-kiihtyvyys on INT8 -määräytyy oletusarvoisesti.

Malli Tehtävä Koko
Parakeet TDT v3 (INT8) Puhe-to-Text (114 kieltä)891 Mt
Kokoro-82M (INT8)Text-to-Speech (8 kieltä)330 Mt
Silero VAD v5Puheaktiivisuuden tunnistus2 Mt
DeepFilterNet3Melun peruuttaminen8 Mt

Lähdekoodi: github.com/soniqo/speech-android

Seuraavat vaiheet