p99 и VAP — Модели смены реплик
p99 оценивает вероятность окончания реплики по одному аудиоканалу. VAP прогнозирует речевую активность по синхронным каналам пользователя и агента. Когда отвечать или перебивать, решает приложение.
Для этих API соберите SDK из исходников. Swift использует SpeechVAD; для C++ нужен SPEECH_CORE_WITH_ONNX=ON. Android API использует ONNX Runtime. Настройки существующего конвейера по умолчанию не меняются.
Модели
| 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 BY 4.0 / MIT |
Swift API
p99 накапливает неполные шаги. Каждый шаг длиной 160 мс возвращает восемь кадров по 20 мс. Для времени решения используйте availableAfterSeconds. Сбрасывайте сессию между разговорами.
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 использует последние 20 секунд аудио с частотой 16 кГц. Длины каналов должны совпадать; для молчащего агента передавайте нули. Короткие входы дополняются тишиной в начале. Каждый прогноз заново вычисляет всё окно: выбирайте интервал под устройство.
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)
}
}Загрузка
- P99-Turn-1-Mini-CoreML · 22 MB
- VAP-OTO-CoreML · 39 MB
- VAP-OTO-ONNX · 40 MB
Результаты тестов
Лицензии
- turn-1-mini by p99lab · Apache-2.0 · LICENSE / NOTICE
- VAP otoSpeech · CC BY 4.0 · VoiceActivityProjection · MIT · LICENSE / NOTICE