p99 et VAP — Modèles de prise de parole
p99 estime la probabilité de fin de tour à partir d’un canal audio. VAP prédit l’activité vocale à partir de canaux synchronisés de l’utilisateur et de l’agent. L’application décide quand répondre ou interrompre.
Compilez le SDK depuis les sources pour ces API. Swift utilise SpeechVAD ; C++ nécessite SPEECH_CORE_WITH_ONNX=ON. L’API Android utilise ONNX Runtime. Ces API indépendantes conservent les réglages par défaut du pipeline existant.
Modèles
| p99 turn-1-mini | 5.3M · CoreML · Float32 | 16 kHz · 160 ms · 1 ch | Apache-2.0 |
|---|---|---|---|
| VAP (otoSpeech) | 5.8M · CoreML / ONNX · Float32 | 16 kHz · 20 s · 2 ch | CC BY 4.0 / MIT |
Swift API
p99 conserve les pas incomplets. Chaque pas de 160 ms renvoie huit trames de 20 ms. Utilisez availableAfterSeconds pour dater la décision et réinitialisez la session entre les conversations.
import SpeechVAD
let p99 = try await P99TurnModel.fromPretrained()
let session = try p99.createSession()
let frames = try session.pushAudio(pcm16k)
for frame in frames {
print(frame.probability, frame.availableAfterSeconds)
}
try session.reset()
let vap = try await VAPModel.fromPretrained()
let forecast = try vap.forecast(userAudio: userPcm, agentAudio: agentPcm)
print(forecast.pNow, forecast.pFuture, forecast.voiceActivity)VAP utilise les 20 dernières secondes à 16 kHz. Les canaux doivent avoir la même longueur ; fournissez des zéros lorsque l’agent est silencieux. Les entrées courtes sont complétées au début. Chaque prédiction recalcule la fenêtre : choisissez une fréquence adaptée à l’appareil.
C++
#include <speech_core/models/onnx_vap.h>
speech_core::OnnxVap model("models/vap.onnx");
auto forecast = model.forecast(user.data(), agent.data(), user.size(), 16000);
// p_now[0]: user, p_now[1]: agent
// p_future and voice_activity use the same channel order.Android
val directory = ModelManager.ensureVapModels(context)
withContext(Dispatchers.Default) {
VoiceActivityProjection(VoiceActivityProjectionConfig(directory)).use { model ->
val forecast = model.forecast(userPcm, agentPcm)
println(forecast.userNearTerm)
println(forecast.agentNearTerm)
}
}Téléchargements
- P99-Turn-1-Mini-CoreML · 22 MB
- VAP-OTO-CoreML · 39 MB
- VAP-OTO-ONNX · 40 MB
Résultats des tests
Licences
- turn-1-mini by p99lab · Apache-2.0 · LICENSE / NOTICE
- VAP otoSpeech · CC BY 4.0 · VoiceActivityProjection · MIT · LICENSE / NOTICE