mirror of
https://github.com/k2-fsa/sherpa-onnx.git
synced 2026-11-10 13:04:05 +08:00
Pad 1s of silence on endpoint for streaming paraformer in Python examples (mirror C++ behavior, #1373) (#4052)
This commit is contained in:
1 parent
1654a3054e
commit
fa29eb91c8
2 files changed
+36
No files matched your search
@@ -9,6 +9,8 @@
|
|||||||
# to download pre-trained models
|
# to download pre-trained models
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -92,6 +94,20 @@ def main():
|
|||||||
display.display()
|
display.display()
|
||||||
|
|
||||||
if is_endpoint:
|
if is_endpoint:
|
||||||
|
# For streaming paraformer models, which have a large right
|
||||||
|
# chunk size, we need to pad ~1 second of silence on
|
||||||
|
# endpointing so that the last character can be recognized.
|
||||||
|
# (Mirrors the C++ example sherpa-onnx-microphone.cc; see
|
||||||
|
# https://github.com/k2-fsa/sherpa-onnx/issues/1373)
|
||||||
|
tail_paddings = np.zeros(int(1.0 * sample_rate), dtype=np.float32)
|
||||||
|
stream.accept_waveform(sample_rate, tail_paddings)
|
||||||
|
while recognizer.is_ready(stream):
|
||||||
|
recognizer.decode_stream(stream)
|
||||||
|
|
||||||
|
result = recognizer.get_result(stream)
|
||||||
|
display.update_text(result)
|
||||||
|
display.display()
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
display.finalize_current_sentence()
|
display.finalize_current_sentence()
|
||||||
display.display()
|
display.display()
|
||||||
|
|||||||
@@ -757,6 +757,26 @@ Go back to <a href="/streaming_record.html">/streaming_record.html</a>
|
|||||||
"segment": segment,
|
"segment": segment,
|
||||||
}
|
}
|
||||||
if self.recognizer.is_endpoint(stream):
|
if self.recognizer.is_endpoint(stream):
|
||||||
|
if self.recognizer.config.model_config.paraformer.encoder:
|
||||||
|
# For streaming paraformer models, which have a large
|
||||||
|
# right chunk size, we need to pad ~1 second of silence
|
||||||
|
# on endpointing so that the last character can be
|
||||||
|
# recognized. (Mirrors sherpa-onnx-microphone.cc; see
|
||||||
|
# https://github.com/k2-fsa/sherpa-onnx/issues/1373)
|
||||||
|
tail_padding = np.zeros(self.sample_rate).astype(np.float32)
|
||||||
|
stream.accept_waveform(
|
||||||
|
sample_rate=self.sample_rate, waveform=tail_padding
|
||||||
|
)
|
||||||
|
while self.recognizer.is_ready(stream):
|
||||||
|
await self.compute_and_decode(stream)
|
||||||
|
|
||||||
|
result = self.recognizer.get_result(stream)
|
||||||
|
message = {
|
||||||
|
"text": result,
|
||||||
|
"segment": segment,
|
||||||
|
}
|
||||||
|
await socket.send(json.dumps(message))
|
||||||
|
|
||||||
self.recognizer.reset(stream)
|
self.recognizer.reset(stream)
|
||||||
segment += 1
|
segment += 1
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user