Maskinöversättning · Engelskt original

p99 och VAP -- Turn-taking models

p99 uppskattar slut-of-turn sannolikhet från en ljudkanal. VAP prognoser talaktivitet från synkroniserade användare och agentkanaler. Ansökan använder dessa poäng för att bestämma när man ska svara eller avbryta.

Bygg SDK från källa till dessa API:er. Swift använder SpeechVAD; C++ kräver SPEECH_CORE_WITH_ONNX=ON. Android API använder ONNX Runtime. Dessa fristående API lämnar befintliga pipeline-fas på plats.

Modeller

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 BY 4.0 / MIT

Swift API

p99 buffertar ofullständiga steg. Varje 160 ms steg returnerar åtta 20 ms ramar. Använd tillgängligaEfterSeconds för beslutstid och återställ sessionen mellan konversationer.

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 använder de senaste 20 sekunderna vid 16 kHz. Supply equal-length-kanaler och nollor för en inaktiv agent. Kortare ingångar får ledande tystnad. Varje prognos rekomputerar fönstret; välj ett förfrågningsintervall som passar enheten.

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)
    }
}

Nedladdningar

Benchmark resultat

TurnBench · Soniqo

Licens