diff --git a/.changeset/old-bananas-melt.md b/.changeset/old-bananas-melt.md new file mode 100644 index 000000000..833d73b3d --- /dev/null +++ b/.changeset/old-bananas-melt.md @@ -0,0 +1,5 @@ +--- +'@livekit/agents-plugin-silero': patch +--- + +persist RNN state between VAD inference calls diff --git a/plugins/silero/src/onnx_model.ts b/plugins/silero/src/onnx_model.ts index e2fea330b..287052c7b 100644 --- a/plugins/silero/src/onnx_model.ts +++ b/plugins/silero/src/onnx_model.ts @@ -22,7 +22,6 @@ export class OnnxModel { #contextSize: number; #sampleRateNd: BigInt64Array; #context: Float32Array; - // #state: Float32Array; #rnnState: Float32Array; #inputBuffer: Float32Array; @@ -73,8 +72,8 @@ export class OnnxModel { sr: new Tensor('int64', this.#sampleRateNd), }) .then((result) => { - // this.#state = result.output.data as Float32Array, - this.#context = this.#inputBuffer.subarray(0, this.#contextSize); + this.#rnnState.set(result.stateN!.data as Float32Array); + this.#context = this.#inputBuffer.slice(-this.#contextSize); return (result.output!.data as Float32Array).at(0)!; }); }