Traducere automată · Originalul în engleză
p99 și VAP
p99 estimează probabilitatea de sfârșit de turn de la un canal audio. VAP prognozează activitatea de vorbire de la canalele sincronizate de utilizator și agent. Aplicația folosește aceste scoruri pentru a decide când să răspundă sau să întrerupă.
Construiește SDK de la sursa pentru aceste API. Swift utilizează SPECIKVAD; C++ necesită speech_CORE_WITH_ONNX=ON. Android API utilizări ONNX Runtime Aceste API-uri independente lasă default-urile existente ale conductei.
Modele
| 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 de 4,0 / MIT |
Swift API
p99 tampons pași incompleti. Fiecare pas de 160 ms întoarce opt cadre de 20 ms. Utilizați disponibile După secunde pentru calendarul de decizie, și resetați sesiunea între conversații.
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 utilizează cele mai recente 20 de secunde la 16 kHz. Canale de alimentare egale cu lungime și zerouri pentru un agent inactiv. Intrările mai scurte primesc tăcere de lider. Fiecare prognoză recalculează fereastra; alegeți un interval de solicitare care se potrivește dispozitivului.
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)
}
}Descărcări
- P99-Turn-1-Mini-CoreML · 22 MB
- VAP-OTO-CoreML · 39 MB
- VAP-OTO-ONNX · 40 MB
Rezultate de referință
Licențe
- turn-1-mini by p99lab · Apache-2.0 · LICENSE / NOITE
- VAP otoSpeech · CC BY 4.0 · VoiceActivityProjection · MIT · LICENSE / NOITE