תרגום מכונה · המקור באנגלית
להתחיל - Android
speech-android מספק עיבוד דיבור על שכפול עבור Android באמצעות ONNX Runtime. הצינור פועל VAD + STT + TTS עם תמיכה ב- barge-in, באופן לא מקוון לחלוטין לאחר ההורדה.
דרישות דרישות
- Android 8+ (API 26)
- arm64-v8a אדריכלות
הורד את אפליקציית ההדגמה שנבנתה מראש כדי לנסות את זה מיד:
תלות מוגברת
הוסף את SDK שלך build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
התחלה מהירה
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
מודל ברירת המחדל אוטומטי הורד מ HuggingFace על השימוש הראשון (500 MB סה"כ) לאחר ההורדה הראשונית, כל ההקצאה פועלת באופן מלא לא מקוון.
גילוי סוף-החזרה
ניתן Smart Turn v3.2 כאשר VAD הפסקה צריך להיות מטופל כמו שאלה ולא נקודת קצה מיידית.זה מעלה את שמונה השניות האחרונות של התור הנוכחי פעם לאחר כל הפסקה אישרה; ציון מתחת לסף ממשיך את אותו תור פתוח, בעוד הכניעה המקסימלית מבטיחה בסופו של דבר קצה.
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
ה- Opt-in מוסיף מודל 11.1 MB int8; השוויון נשאר לגמרי לא מקוון. Smart Turn נוצר על ידי Pipecat/Daily והוא מחולק תחת BSD-2-Clause
מערכת Voice Input (Recognition Service)
SDK מטביעה מוכנה SpeechRecognitionService זה מתחבר למסגרת של Android SpeechRecognizer API - שום קוד לכתוב ברגע שהאפליקציית שלך נבחרת כזיהוי קול ברירת המחדל, כל אפליקציה של צד שלישי הקוראת SpeechRecognizer.createSpeechRecognizer(context) (עם לא ComponentName(הופנה מהדף STT דרך הצינור שלך)
1. Declare RECORD_AUDIO והשירות ב 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. הוסף 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. הגדר את השירות כמו ברירת מחדל המערכת (Settings) מערכת שפה & קלט פנקס קלט קול על מלאי Android, או באמצעות adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. לבדוק על ידי הפעלת מבחן Recognizer Test מסך, אשר קורא SpeechRecognizer.createSpeechRecognizer(ctx)
הטמעת השירות onCheckRecognitionSupport (API 33+בחזרה את 27 BCP-47 שפות Parakeet TDT v3 כיסויים, מסומן installedOnDeviceLanguage פעם יש מודלים (או pendingOnDeviceLanguage בזמן שהם מורידים את תשומת הלב של Audio Focus נרכשת עם AUDIOFOCUS_GAIN_TRANSIENT למשך תקופת ישיבה.
Gboard, Samsung Keyboard, ו-Google Assistant מפצירים את המזהים שלהם ומדלפקים את המערכת כברירת מחדל. Apps שמכנים במפורש את המסגרת SpeechRecognizer API (או בונים את UI שלהם על גבי זה) הם אלה שזרמו באמצעות השירות שלך.
מודלים
כל המודלים רצים באמצעות ONNX Runtime עם האצה NNAPI. INT8 המוגדרת כברירת מחדל.
| מודל מודל | משימות | גודל |
|---|---|---|
| Parakeet TDT v3 (INT8) | דיבור אל-טקסט (114 שפות) | 891 MB |
| Kokoro-82M (INT8) | טקסט-to-Speech (8 שפות) | 330 MB |
| Silero VAD v5 | זיהוי פעילות קולית | 2 MB |
| DeepFilterNet3 | ביטול רעש | 8 MB |
קוד מקור: github.com/soniqo/speech-android
צעדים הבאים
- Benchmarks Android ביצוע הקצינה
- Linux C API - מוטבע Linux ההתקנה