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-mini5,3M · CoreML · Float3216 kHz · 160 ms · 1 chApache-2.0
VAP (otoSpeech)5,8M · CoreML / ONNX · Float3216 kHz · 20 s · 2 chCC 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

Rezultate de referință

TurnBench · Soniqo

Licențe