Awtomatikong salin · Orihinal sa Ingles

p99 at VAP — Mga modelong Turn-coating

p99 tantiyang dulo-of-turn probabilidad mula sa isang audio channel. VAP propesiya ng gawain ng pagsasalita mula sa combination user at agent channels. Ang aplikasyon ay gumagamit ng mga iskor na ito upang magpasiya kung kailan sasagutin o sasagutan.

Magtayo ng SDK mula sa pinagmulan ng mga API na ito. Swift ay gumagamit ng SpeakVAD; C++ kailangan ng SPEECH_CORE_WITH_ONNX=ON. Android API gumamit ONNX Runtime. Ang standalone APIs na ito ay nag-iiwan ng mga umiiral na default sa tubo.

Mga modelo

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

Swift API

Ang p99 ay nagreresulta sa hindi kumpletong mga hakbang. Ang bawat 160 ms hakbang ay nagbabalik ng walong 20 ms frames. Gamitin ang mga afterSeconds para sa premise ng desisyon, at ayusin ang sesyon sa pagitan ng mga pag-uusap.

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)

Ang VAP ay gumagamit ng pinakahuling 20 segundo sa 16 kHz. supply equal-habad channels at zeros para sa isang di-aktibong agent. Ang Shorter inputs ay tumatanggap ng nangungunang katahimikan. Ang bawat paghula ay muling nagkokodigo sa bintana; pumili ng isang interval na angkop sa aparato.

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

Mga download

Mga resulta ng benchmark

TurnBench · Soniqo

Mga Lisensiya