Automatische vertaling · Engels origineel

p99 en VAP

p99 schat de eind-to-turn waarschijnlijkheid van één audiokanaal. VAP voorspelt spraakactiviteit van gesynchroniseerde gebruikers- en agentkanalen. De toepassing gebruikt deze scores om te bepalen wanneer ze moeten antwoorden of onderbreken.

Bouw de SDK van de broncode voor deze API's. Swift gebruikt SpeechVAD; C++ vereist SPEECH_CORE_WITH_ONNX=ON. De Android API gebruikt ONNX Runtime. Deze standalone APIs laten de bestaande pijplijnstandaarden achter.

Modellen

p99 turn-1-mini5.3M · CoreML · Float3216 kHz · 160 ms · 1 lApache-2.0
VAP (otoSpraak)5.8M · CoreML / ONNX · Float3216 kHz · 20 s · 2 lCC BY 4.0 / MIT

Swift API

p99 buffert onvolledige stappen. Elke stap van 160 ms geeft acht 20 ms frames terug. Gebruik beschikbaarNa Seconden voor de timing van de beslissing, en reset de sessie tussen gesprekken.

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 gebruikt de laatste 20 seconden bij 16 kHz. Levert even lange kanalen en nullen voor een inactief middel. Kortere ingangen ontvangen leidende stilte. Elke voorspelling hercompileert het venster; kies een verzoekinterval dat bij het apparaat past.

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

Downloads

Benchmarkresultaten

TurnBench · Soniqo

Vergunningen