Awtomatikong salin · Orihinal sa Ingles
Pagsisimula — Android
Ang speech-android ay nagbibigay ng on-device speech processing para sa Android gamit ang ONNX Runtime. Ang tubo ay tumatakbo ng VAD + STT + TTS na may suportang gabara-in, ganap na offline pagkatapos ng model download.
Mga Kahilingan
- Android 8+ (API 26)
- arm64-v8a arkitektura
I-download ang pre-build demo app upang subukan kaagad:
Dependensiya sa Gradle
Idagdag ang SDK sa iyong build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
Mabilis na Pasimula
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
Ang default models auto-download mula sa HuggingFace sa unang paggamit (iF.500 MB kabuuang). Pagkatapos ng simulang download, ang lahat ng mga reception ay ganap na tumatakbo sa offline.
Wakas-of-turn detection
Maaring Smart Turn v3.2 kapag ang isang VAD paghinto ay dapat ituring bilang isang tanong sa halip na isang kagyat na endpoint. Ito ay nag-eeere ng huling walong segundo ng agos na ikot isang beses pagkatapos ng bawat nakumpirmang paghinto; ang isang iskor sa ibaba ng pasukan ay nananatiling bukas, habang ang maximum-sileence cap ay nagbibigay ng garantiya sa wakas na toppoinpointure.
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
Ang opt-in na ito ay nagdadagdag ng isang pindong 11.1 MB int8 model; ang confix ay nananatiling ganap na offline. Smart Turn ay nilikha ng ZXQXZ Pipecat/Daily at ipinamamahagi sa ilalim ng BSD-2-Clause.
System Voice Input (Pagkakilala)
Ang mga barkong SDK ay isang handa nang-gawa SpeechRecognitionService na nakapupuslit sa balangkas ng Androidiphers SpeechRecognizer API — walang code na isusulat. Minsang mapili ang iyong app bilang default voice celector, anumang third-party app na tumatawag SpeechRecognizer.createSpeechRecognizer(context) (Na wala ComponentName) Magkaroon ng off-device STT sa iyong pipeline.
1. Ipahayag RECORD_AUDIO at ang paglilingkod 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. Magdagdag 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. Ilagay ang serbisyo bilang system default (Settings → System → Languages & input → Voice input picker sa stock Android, o via adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. Pare - pareho sa pamamagitan ng pagpapatakbo ng demo appiologists Pagsubok sa mga Kkilala screen, na tumatawag SpeechRecognizer.createSpeechRecognizer(ctx) (walang sangkap) at troso ang bawat balangkas na callback — kapaki-pakinabang sa pagpapatunay ng winder round-trip nang hindi nangangailangan ng logcat.
Ang mga gamit sa paglilingkod onCheckRecognitionSupport (API 33+) pagbabalik 27 BCP-47 wika Parakeet TDT v3 mga pabalat, minarkahan installedOnDeviceLanguage Minsang naroroon ang mga modelo (o pendingOnDeviceLanguage Habang ang mga ito feire downloading). ang isangudio pokus ay nakukuha na may pag-download). AUDIOFOCUS_GAIN_TRANSIENT sa haba ng isang sesyon.
Gboard, Samsung Keyboard, at Google Assistant lot ang sarili nilang mga ident at nilalampasan ang system default. SpeechRecognizer Ang API (o magtayo ng kanilang sariling UI sa ibabaw nito) ang siyang dumadaloy sa iyong serbisyo.
Mga modelo
Ang lahat ng mga modelo ay tumatakbo sa pamamagitan ng ONNX Runtime na may NNAPI procession. INT8 na quantized sa pamamagitan ng default.
| Huwaran | Task | Laki |
|---|---|---|
| Parakeet TDT v3 (INT8) | Pagsasalita-to-Text (114 na wika) | 891 MB |
| Kokoro-82M (INT8) | Text-to-Speech (8 wika) | 330 MB |
| Silero VAD v5 | Pagtukoy sa aktibidad ng boses | 2 MB |
| DeepFilterNet3 | Pag - iimbak ng Ingay | 8 MB |
Pinagmulan na kodigo: github.com/soniqo/speech-android
Susunod na mga Hakbang
- Mga Marka ng Bench — Android na gumaganap ng kahanga - hangang pagtatanghal
- Linux C API — Nakatanim na Linux setup