mirror of
https://github.com/modelscope/FunASR.git
synced 2026-10-12 02:19:18 +00:00
deploy: 2b6294d69e
This commit is contained in:
@@ -23197,7 +23197,7 @@
|
||||
res = model.generate(input=kwargs["input"])
|
||||
print(res)
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e466"><span class="dtag badge-c">class</span><h2>_BatchRequest</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L40" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>class _BatchRequest:
|
||||
<div class="api-detail" id="e466"><span class="dtag badge-c">class</span><h2>_BatchRequest</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L41" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>class _BatchRequest:
|
||||
def __init__(self, inputs, kwargs):
|
||||
self.inputs = inputs
|
||||
self.kwargs = kwargs
|
||||
@@ -23206,7 +23206,7 @@
|
||||
self.result = None
|
||||
self.error = None
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e467"><span class="dtag badge-c">class</span><h2>ThreadSafeGenerateModel</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L50" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Protect mutable AutoModel runtime configuration across session threads.</p>
|
||||
<div class="api-detail" id="e467"><span class="dtag badge-c">class</span><h2>ThreadSafeGenerateModel</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L51" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Protect mutable AutoModel runtime configuration across session threads.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code>class ThreadSafeGenerateModel:
|
||||
"""Protect mutable AutoModel runtime configuration across session threads."""
|
||||
|
||||
@@ -23220,15 +23220,15 @@
|
||||
|
||||
def __getattr__(self, name):
|
||||
return getattr(self.model, name)
|
||||
</code></pre></details><h3 class="mt">Methods</h3><div class="mblk"><code>.generate(*args, **kwargs)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L57" target="_blank" class="gh-link">L57</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def generate(self, *args, **kwargs):
|
||||
</code></pre></details><h3 class="mt">Methods</h3><div class="mblk"><code>.generate(*args, **kwargs)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L58" target="_blank" class="gh-link">L58</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def generate(self, *args, **kwargs):
|
||||
with self.lock:
|
||||
return self.model.generate(*args, **kwargs)
|
||||
</code></pre></details></div></div>
|
||||
<div class="api-detail" id="e468"><span class="dtag badge-m">method</span><h2><code>ThreadSafeGenerateModel.generate(*args, **kwargs)</code></h2><div class="dmod">funasr.bin.realtime_ws.ThreadSafeGenerateModel · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L57" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def generate(self, *args, **kwargs):
|
||||
<div class="api-detail" id="e468"><span class="dtag badge-m">method</span><h2><code>ThreadSafeGenerateModel.generate(*args, **kwargs)</code></h2><div class="dmod">funasr.bin.realtime_ws.ThreadSafeGenerateModel · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L58" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def generate(self, *args, **kwargs):
|
||||
with self.lock:
|
||||
return self.model.generate(*args, **kwargs)
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e469"><span class="dtag badge-c">class</span><h2>RealtimeBatchingEngine</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L65" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Serialize the shared engine while batching compatible session requests.</p>
|
||||
<div class="api-detail" id="e469"><span class="dtag badge-c">class</span><h2>RealtimeBatchingEngine</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L66" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Serialize the shared engine while batching compatible session requests.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code>class RealtimeBatchingEngine:
|
||||
"""Serialize the shared engine while batching compatible session requests."""
|
||||
|
||||
@@ -23259,7 +23259,7 @@
|
||||
)
|
||||
if isinstance(value, list):
|
||||
return (
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L65" target="_blank" class="src-more">View full source on GitHub →</a></details><h3 class="mt">Methods</h3><div class="mblk"><code>.generate(inputs, **kwargs)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L114" target="_blank" class="gh-link">L114</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def generate(self, inputs, **kwargs):
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L66" target="_blank" class="src-more">View full source on GitHub →</a></details><h3 class="mt">Methods</h3><div class="mblk"><code>.generate(inputs, **kwargs)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L115" target="_blank" class="gh-link">L115</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def generate(self, inputs, **kwargs):
|
||||
request_inputs = list(inputs) if isinstance(inputs, (list, tuple)) else [inputs]
|
||||
if not request_inputs:
|
||||
return []
|
||||
@@ -23280,7 +23280,7 @@
|
||||
raise request.error
|
||||
return request.result
|
||||
</code></pre></details></div></div>
|
||||
<div class="api-detail" id="e470"><span class="dtag badge-m">method</span><h2><code>RealtimeBatchingEngine.generate(inputs, **kwargs)</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeBatchingEngine · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L114" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def generate(self, inputs, **kwargs):
|
||||
<div class="api-detail" id="e470"><span class="dtag badge-m">method</span><h2><code>RealtimeBatchingEngine.generate(inputs, **kwargs)</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeBatchingEngine · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L115" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def generate(self, inputs, **kwargs):
|
||||
request_inputs = list(inputs) if isinstance(inputs, (list, tuple)) else [inputs]
|
||||
if not request_inputs:
|
||||
return []
|
||||
@@ -23301,7 +23301,7 @@
|
||||
raise request.error
|
||||
return request.result
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e471"><span class="dtag badge-f">function</span><h2><code>detect_and_fix_hallucination(text, max_ngram_length, max_occurrences)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L334" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Detect repeated patterns (hallucination) and truncate to keep one occurrence.</p>
|
||||
<div class="api-detail" id="e471"><span class="dtag badge-f">function</span><h2><code>detect_and_fix_hallucination(text, max_ngram_length, max_occurrences)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L335" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Detect repeated patterns (hallucination) and truncate to keep one occurrence.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code>def detect_and_fix_hallucination(text, max_ngram_length=12, max_occurrences=3):
|
||||
"""Detect repeated patterns (hallucination) and truncate to keep one occurrence."""
|
||||
if not text or len(text) < max_ngram_length * 2:
|
||||
@@ -23332,8 +23332,8 @@
|
||||
continue
|
||||
count += 1
|
||||
return count
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L334" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e472"><span class="dtag badge-c">class</span><h2>ClientEndpointVAD</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L437" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Track an utterance start without loading or running a VAD model.</p>
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L335" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e472"><span class="dtag badge-c">class</span><h2>ClientEndpointVAD</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L438" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Track an utterance start without loading or running a VAD model.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code>class ClientEndpointVAD:
|
||||
"""Track an utterance start without loading or running a VAD model."""
|
||||
|
||||
@@ -23346,20 +23346,20 @@
|
||||
|
||||
def reset(self):
|
||||
self.current_speech_start = None
|
||||
</code></pre></details><h3 class="mt">Methods</h3><div class="mblk"><code>.start_utterance(start_ms)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L443" target="_blank" class="gh-link">L443</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def start_utterance(self, start_ms):
|
||||
</code></pre></details><h3 class="mt">Methods</h3><div class="mblk"><code>.start_utterance(start_ms)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L444" target="_blank" class="gh-link">L444</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def start_utterance(self, start_ms):
|
||||
if self.current_speech_start is None:
|
||||
self.current_speech_start = start_ms
|
||||
</code></pre></details></div><div class="mblk"><code>.reset()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L447" target="_blank" class="gh-link">L447</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def reset(self):
|
||||
</code></pre></details></div><div class="mblk"><code>.reset()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L448" target="_blank" class="gh-link">L448</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def reset(self):
|
||||
self.current_speech_start = None
|
||||
</code></pre></details></div></div>
|
||||
<div class="api-detail" id="e473"><span class="dtag badge-m">method</span><h2><code>ClientEndpointVAD.start_utterance(start_ms)</code></h2><div class="dmod">funasr.bin.realtime_ws.ClientEndpointVAD · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L443" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def start_utterance(self, start_ms):
|
||||
<div class="api-detail" id="e473"><span class="dtag badge-m">method</span><h2><code>ClientEndpointVAD.start_utterance(start_ms)</code></h2><div class="dmod">funasr.bin.realtime_ws.ClientEndpointVAD · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L444" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def start_utterance(self, start_ms):
|
||||
if self.current_speech_start is None:
|
||||
self.current_speech_start = start_ms
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e474"><span class="dtag badge-m">method</span><h2><code>ClientEndpointVAD.reset()</code></h2><div class="dmod">funasr.bin.realtime_ws.ClientEndpointVAD · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L447" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def reset(self):
|
||||
<div class="api-detail" id="e474"><span class="dtag badge-m">method</span><h2><code>ClientEndpointVAD.reset()</code></h2><div class="dmod">funasr.bin.realtime_ws.ClientEndpointVAD · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L448" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def reset(self):
|
||||
self.current_speech_start = None
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e475"><span class="dtag badge-c">class</span><h2>HybridSpeakerTracker</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L451" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Speaker diarization: streaming ClusterBackend + final re-clustering.</p>
|
||||
<div class="api-detail" id="e475"><span class="dtag badge-c">class</span><h2>HybridSpeakerTracker</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L452" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Speaker diarization: streaming ClusterBackend + final re-clustering.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code>class HybridSpeakerTracker:
|
||||
"""Speaker diarization: streaming ClusterBackend + final re-clustering."""
|
||||
|
||||
@@ -23390,7 +23390,7 @@
|
||||
self.all_chunks = deque(maxlen=max_history_chunks)
|
||||
self.all_embeddings = deque(maxlen=max_history_chunks)
|
||||
self.last_speaker_id = 0
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L451" target="_blank" class="src-more">View full source on GitHub →</a></details><h3 class="mt">Methods</h3><div class="mblk"><code>.assign_streaming(audio_samples, seg_start_s, seg_end_s, sentence)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L483" target="_blank" class="gh-link">L483</a><div class="mdoc"><p>Assign speaker ID during streaming using ClusterBackend.</p>
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L452" target="_blank" class="src-more">View full source on GitHub →</a></details><h3 class="mt">Methods</h3><div class="mblk"><code>.assign_streaming(audio_samples, seg_start_s, seg_end_s, sentence)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L484" target="_blank" class="gh-link">L484</a><div class="mdoc"><p>Assign speaker ID during streaming using ClusterBackend.</p>
|
||||
</div><details class="src-block"><summary>📄 Source</summary><pre><code> def assign_streaming(self, audio_samples, seg_start_s, seg_end_s, sentence):
|
||||
"""Assign speaker ID during streaming using ClusterBackend."""
|
||||
vad_seg = [[seg_start_s, seg_end_s, audio_samples]]
|
||||
@@ -23413,7 +23413,7 @@
|
||||
self.distribute_spk(temp, sv_output)
|
||||
sentence["spk"] = temp[0].get("spk", self.last_speaker_id)
|
||||
self.last_speaker_id = sentence["spk"]
|
||||
</code></pre></details></div><div class="mblk"><code>.finalize(sentences, min_split_s)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L573" target="_blank" class="gh-link">L573</a><div class="mdoc"><p>Final re-clustering for accurate speaker assignment.</p>
|
||||
</code></pre></details></div><div class="mblk"><code>.finalize(sentences, min_split_s)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L574" target="_blank" class="gh-link">L574</a><div class="mdoc"><p>Final re-clustering for accurate speaker assignment.</p>
|
||||
</div><details class="src-block"><summary>📄 Source</summary><pre><code> def finalize(self, sentences, min_split_s=3.0):
|
||||
"""Final re-clustering for accurate speaker assignment."""
|
||||
if not self.all_embeddings or not sentences:
|
||||
@@ -23444,13 +23444,13 @@
|
||||
prefix.update(text=prefix_text, end=history_start_ms)
|
||||
final_sentences.append(prefix)
|
||||
current.update(
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L573" target="_blank" class="src-more">View full source →</a></details></div><div class="mblk"><code>.reset()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L667" target="_blank" class="gh-link">L667</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def reset(self):
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L574" target="_blank" class="src-more">View full source →</a></details></div><div class="mblk"><code>.reset()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L668" target="_blank" class="gh-link">L668</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def reset(self):
|
||||
self.speaker_centers = []
|
||||
self.speaker_center_updates = []
|
||||
self.all_chunks.clear()
|
||||
self.all_embeddings.clear()
|
||||
self.last_speaker_id = 0
|
||||
</code></pre></details></div><div class="mblk"><code>.session_stats()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L674" target="_blank" class="gh-link">L674</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def session_stats(self):
|
||||
</code></pre></details></div><div class="mblk"><code>.session_stats()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L675" target="_blank" class="gh-link">L675</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def session_stats(self):
|
||||
return {
|
||||
"speaker_history_chunks": len(self.all_chunks),
|
||||
"speaker_history_embeddings": len(self.all_embeddings),
|
||||
@@ -23460,7 +23460,7 @@
|
||||
"last_speaker_id": self.last_speaker_id,
|
||||
}
|
||||
</code></pre></details></div></div>
|
||||
<div class="api-detail" id="e476"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.assign_streaming(audio_samples, seg_start_s, seg_end_s, sentence)</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L483" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Assign speaker ID during streaming using ClusterBackend.</p>
|
||||
<div class="api-detail" id="e476"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.assign_streaming(audio_samples, seg_start_s, seg_end_s, sentence)</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L484" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Assign speaker ID during streaming using ClusterBackend.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code> def assign_streaming(self, audio_samples, seg_start_s, seg_end_s, sentence):
|
||||
"""Assign speaker ID during streaming using ClusterBackend."""
|
||||
vad_seg = [[seg_start_s, seg_end_s, audio_samples]]
|
||||
@@ -23484,7 +23484,7 @@
|
||||
sentence["spk"] = temp[0].get("spk", self.last_speaker_id)
|
||||
self.last_speaker_id = sentence["spk"]
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e477"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.finalize(sentences, min_split_s)</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L573" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Final re-clustering for accurate speaker assignment.</p>
|
||||
<div class="api-detail" id="e477"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.finalize(sentences, min_split_s)</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L574" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Final re-clustering for accurate speaker assignment.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code> def finalize(self, sentences, min_split_s=3.0):
|
||||
"""Final re-clustering for accurate speaker assignment."""
|
||||
if not self.all_embeddings or not sentences:
|
||||
@@ -23515,15 +23515,15 @@
|
||||
prefix.update(text=prefix_text, end=history_start_ms)
|
||||
final_sentences.append(prefix)
|
||||
current.update(
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L573" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e478"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.reset()</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L667" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def reset(self):
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L574" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e478"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.reset()</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L668" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def reset(self):
|
||||
self.speaker_centers = []
|
||||
self.speaker_center_updates = []
|
||||
self.all_chunks.clear()
|
||||
self.all_embeddings.clear()
|
||||
self.last_speaker_id = 0
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e479"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.session_stats()</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L674" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def session_stats(self):
|
||||
<div class="api-detail" id="e479"><span class="dtag badge-m">method</span><h2><code>HybridSpeakerTracker.session_stats()</code></h2><div class="dmod">funasr.bin.realtime_ws.HybridSpeakerTracker · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L675" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def session_stats(self):
|
||||
return {
|
||||
"speaker_history_chunks": len(self.all_chunks),
|
||||
"speaker_history_embeddings": len(self.all_embeddings),
|
||||
@@ -23533,7 +23533,7 @@
|
||||
"last_speaker_id": self.last_speaker_id,
|
||||
}
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e480"><span class="dtag badge-c">class</span><h2>RealtimeASRSession</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L685" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Manages a single streaming ASR session.</p>
|
||||
<div class="api-detail" id="e480"><span class="dtag badge-c">class</span><h2>RealtimeASRSession</h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L686" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Manages a single streaming ASR session.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code>class RealtimeASRSession:
|
||||
"""Manages a single streaming ASR session."""
|
||||
|
||||
@@ -23564,7 +23564,7 @@
|
||||
# length-L segment. Under concurrency that saturates the GPU and long-segment
|
||||
# requests time out. Capping the partial window to the most recent
|
||||
# `partial_window_sec` seconds makes interim re-decoding ~O(L) per segment
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L685" target="_blank" class="src-more">View full source on GitHub →</a></details><h3 class="mt">Methods</h3><div class="mblk"><code>.add_audio(pcm_bytes)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L745" target="_blank" class="gh-link">L745</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def add_audio(self, pcm_bytes):
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L686" target="_blank" class="src-more">View full source on GitHub →</a></details><h3 class="mt">Methods</h3><div class="mblk"><code>.add_audio(pcm_bytes)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L746" target="_blank" class="gh-link">L746</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def add_audio(self, pcm_bytes):
|
||||
audio_int16 = np.frombuffer(pcm_bytes, dtype=np.int16)
|
||||
audio_float = audio_int16.astype(np.float32) / 32768.0
|
||||
chunk_start_sample = self.total_samples
|
||||
@@ -23589,10 +23589,10 @@
|
||||
logger.info(f"Locked: [{seg[0]}-{seg[1]}ms] \"{seg_text[:40]}\"")
|
||||
|
||||
self._compact_audio_buffer()
|
||||
</code></pre></details></div><div class="mblk"><code>.should_decode()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L879" target="_blank" class="gh-link">L879</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def should_decode(self):
|
||||
</code></pre></details></div><div class="mblk"><code>.should_decode()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L880" target="_blank" class="gh-link">L880</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def should_decode(self):
|
||||
threshold = self.first_chunk_samples if not self.first_decode_done else self.chunk_samples
|
||||
return (self.total_samples - self.last_decode_samples) >= threshold
|
||||
</code></pre></details></div><div class="mblk"><code>.decode(is_final)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L884" target="_blank" class="gh-link">L884</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def decode(self, is_final=False):
|
||||
</code></pre></details></div><div class="mblk"><code>.decode(is_final)</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L885" target="_blank" class="gh-link">L885</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def decode(self, is_final=False):
|
||||
if is_final and self.endpoint_mode == "client":
|
||||
return self.commit()
|
||||
|
||||
@@ -23622,7 +23622,7 @@
|
||||
|
||||
if len(seg_audio) < self.chunk_samples // 2:
|
||||
return self._build_response(is_final)
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L884" target="_blank" class="src-more">View full source →</a></details></div><div class="mblk"><code>.commit()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L952" target="_blank" class="gh-link">L952</a><div class="mdoc"><p>Finalize one client-delimited utterance while keeping the session open.</p>
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L885" target="_blank" class="src-more">View full source →</a></details></div><div class="mblk"><code>.commit()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L953" target="_blank" class="gh-link">L953</a><div class="mdoc"><p>Finalize one client-delimited utterance while keeping the session open.</p>
|
||||
</div><details class="src-block"><summary>📄 Source</summary><pre><code> def commit(self):
|
||||
"""Finalize one client-delimited utterance while keeping the session open."""
|
||||
if self.endpoint_mode != "client":
|
||||
@@ -23640,7 +23640,7 @@
|
||||
response = self._build_response(is_final=True)
|
||||
self._reset_utterance_state()
|
||||
return response
|
||||
</code></pre></details></div><div class="mblk"><code>.get_partial_decode_audio()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1015" target="_blank" class="gh-link">L1015</a><div class="mdoc"><p>Return the bounded audio window used for unstable partial decoding.</p>
|
||||
</code></pre></details></div><div class="mblk"><code>.get_partial_decode_audio()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1016" target="_blank" class="gh-link">L1016</a><div class="mdoc"><p>Return the bounded audio window used for unstable partial decoding.</p>
|
||||
</div><details class="src-block"><summary>📄 Source</summary><pre><code> def get_partial_decode_audio(self):
|
||||
"""Return the bounded audio window used for unstable partial decoding."""
|
||||
seg_start_sample = int(self.vad.current_speech_start * self.sample_rate / 1000)
|
||||
@@ -23654,7 +23654,7 @@
|
||||
decode_start_sample = max(self.audio_buffer_start_sample, decode_start_sample)
|
||||
start_ms = int(decode_start_sample * 1000 / self.sample_rate)
|
||||
return self._slice_audio(decode_start_sample, self.total_samples), start_ms
|
||||
</code></pre></details></div><div class="mblk"><code>.session_stats()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1274" target="_blank" class="gh-link">L1274</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def session_stats(self):
|
||||
</code></pre></details></div><div class="mblk"><code>.session_stats()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1282" target="_blank" class="gh-link">L1282</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def session_stats(self):
|
||||
stats = {
|
||||
"duration_ms": int(self.total_samples * 1000 / self.sample_rate),
|
||||
"total_samples": self.total_samples,
|
||||
@@ -23669,7 +23669,7 @@
|
||||
if self.spk_tracker:
|
||||
stats.update(self.spk_tracker.session_stats())
|
||||
return stats
|
||||
</code></pre></details></div><div class="mblk"><code>.reset()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1290" target="_blank" class="gh-link">L1290</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def reset(self):
|
||||
</code></pre></details></div><div class="mblk"><code>.reset()</code> <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1298" target="_blank" class="gh-link">L1298</a><div class="mdoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source</summary><pre><code> def reset(self):
|
||||
self.audio_buffer = np.array([], dtype=np.float32)
|
||||
self.audio_buffer_start_sample = 0
|
||||
self.total_samples = 0
|
||||
@@ -23686,7 +23686,7 @@
|
||||
if self.spk_tracker:
|
||||
self.spk_tracker.reset()
|
||||
</code></pre></details></div></div>
|
||||
<div class="api-detail" id="e481"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.add_audio(pcm_bytes)</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L745" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def add_audio(self, pcm_bytes):
|
||||
<div class="api-detail" id="e481"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.add_audio(pcm_bytes)</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L746" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def add_audio(self, pcm_bytes):
|
||||
audio_int16 = np.frombuffer(pcm_bytes, dtype=np.int16)
|
||||
audio_float = audio_int16.astype(np.float32) / 32768.0
|
||||
chunk_start_sample = self.total_samples
|
||||
@@ -23712,11 +23712,11 @@
|
||||
|
||||
self._compact_audio_buffer()
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e482"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.should_decode()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L879" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def should_decode(self):
|
||||
<div class="api-detail" id="e482"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.should_decode()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L880" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def should_decode(self):
|
||||
threshold = self.first_chunk_samples if not self.first_decode_done else self.chunk_samples
|
||||
return (self.total_samples - self.last_decode_samples) >= threshold
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e483"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.decode(is_final)</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L884" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def decode(self, is_final=False):
|
||||
<div class="api-detail" id="e483"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.decode(is_final)</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L885" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def decode(self, is_final=False):
|
||||
if is_final and self.endpoint_mode == "client":
|
||||
return self.commit()
|
||||
|
||||
@@ -23746,8 +23746,8 @@
|
||||
|
||||
if len(seg_audio) < self.chunk_samples // 2:
|
||||
return self._build_response(is_final)
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L884" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e484"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.commit()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L952" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Finalize one client-delimited utterance while keeping the session open.</p>
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L885" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e484"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.commit()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L953" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Finalize one client-delimited utterance while keeping the session open.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code> def commit(self):
|
||||
"""Finalize one client-delimited utterance while keeping the session open."""
|
||||
if self.endpoint_mode != "client":
|
||||
@@ -23766,7 +23766,7 @@
|
||||
self._reset_utterance_state()
|
||||
return response
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e485"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.get_partial_decode_audio()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1015" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Return the bounded audio window used for unstable partial decoding.</p>
|
||||
<div class="api-detail" id="e485"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.get_partial_decode_audio()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1016" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p>Return the bounded audio window used for unstable partial decoding.</p>
|
||||
</div><details class="src-block"><summary>📄 Source code</summary><pre><code> def get_partial_decode_audio(self):
|
||||
"""Return the bounded audio window used for unstable partial decoding."""
|
||||
seg_start_sample = int(self.vad.current_speech_start * self.sample_rate / 1000)
|
||||
@@ -23781,7 +23781,7 @@
|
||||
start_ms = int(decode_start_sample * 1000 / self.sample_rate)
|
||||
return self._slice_audio(decode_start_sample, self.total_samples), start_ms
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e486"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.session_stats()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1274" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def session_stats(self):
|
||||
<div class="api-detail" id="e486"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.session_stats()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1282" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def session_stats(self):
|
||||
stats = {
|
||||
"duration_ms": int(self.total_samples * 1000 / self.sample_rate),
|
||||
"total_samples": self.total_samples,
|
||||
@@ -23797,7 +23797,7 @@
|
||||
stats.update(self.spk_tracker.session_stats())
|
||||
return stats
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e487"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.reset()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1290" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def reset(self):
|
||||
<div class="api-detail" id="e487"><span class="dtag badge-m">method</span><h2><code>RealtimeASRSession.reset()</code></h2><div class="dmod">funasr.bin.realtime_ws.RealtimeASRSession · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1298" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code> def reset(self):
|
||||
self.audio_buffer = np.array([], dtype=np.float32)
|
||||
self.audio_buffer_start_sample = 0
|
||||
self.total_samples = 0
|
||||
@@ -23814,7 +23814,7 @@
|
||||
if self.spk_tracker:
|
||||
self.spk_tracker.reset()
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e488"><span class="dtag badge-f">function</span><h2><code>load_models(args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1314" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def load_models(args):
|
||||
<div class="api-detail" id="e488"><span class="dtag badge-f">function</span><h2><code>load_models(args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1322" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def load_models(args):
|
||||
global _vllm_engine, _asr_kwargs, _vad_model, _spk_model
|
||||
if _vllm_engine is None:
|
||||
from funasr import AutoModel
|
||||
@@ -23844,13 +23844,13 @@
|
||||
logger.info(f"Loaded {len(hotwords)} hotwords from '{hw_file}'")
|
||||
|
||||
if getattr(args, 'language', None):
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1314" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e489"><span class="dtag badge-f">function</span><h2><code>create_speaker_tracker(spk_model, args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1383" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def create_speaker_tracker(spk_model, args):
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1322" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e489"><span class="dtag badge-f">function</span><h2><code>create_speaker_tracker(spk_model, args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1391" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def create_speaker_tracker(spk_model, args):
|
||||
if not getattr(args, "enable_spk", False) or spk_model is None:
|
||||
return None
|
||||
return HybridSpeakerTracker(spk_model, args.device)
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e490"><span class="dtag badge-f">function</span><h2><code>create_vad(vad_model, args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1389" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def create_vad(vad_model, args):
|
||||
<div class="api-detail" id="e490"><span class="dtag badge-f">function</span><h2><code>create_vad(vad_model, args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1397" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def create_vad(vad_model, args):
|
||||
if getattr(args, "endpoint_mode", "server") == "client":
|
||||
return ClientEndpointVAD()
|
||||
|
||||
@@ -23874,7 +23874,7 @@
|
||||
setattr(session_model, name, session_config)
|
||||
return DynamicStreamingVAD(session_model)
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e491"><span class="dtag badge-f">function</span><h2><code>log_session_stats(session)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1419" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def log_session_stats(session):
|
||||
<div class="api-detail" id="e491"><span class="dtag badge-f">function</span><h2><code>log_session_stats(session)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1427" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def log_session_stats(session):
|
||||
stats = session.session_stats()
|
||||
logger.info(
|
||||
"Session stats: duration_ms=%d audio_buffer_samples=%d "
|
||||
@@ -23892,7 +23892,7 @@
|
||||
)
|
||||
return stats
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e492"><span class="dtag badge-f">function</span><h2><code>build_websocket_serve_kwargs(args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1567" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def build_websocket_serve_kwargs(args):
|
||||
<div class="api-detail" id="e492"><span class="dtag badge-f">function</span><h2><code>build_websocket_serve_kwargs(args)</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1575" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def build_websocket_serve_kwargs(args):
|
||||
return {
|
||||
"max_size": args.ws_max_size,
|
||||
"ping_interval": _positive_or_none(args.ws_ping_interval),
|
||||
@@ -23900,7 +23900,7 @@
|
||||
"close_timeout": args.ws_close_timeout,
|
||||
}
|
||||
</code></pre></details></div>
|
||||
<div class="api-detail" id="e493"><span class="dtag badge-f">function</span><h2><code>build_arg_parser()</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1593" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def build_arg_parser():
|
||||
<div class="api-detail" id="e493"><span class="dtag badge-f">function</span><h2><code>build_arg_parser()</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1601" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def build_arg_parser():
|
||||
parser = argparse.ArgumentParser(description="Fun-ASR-Nano Streaming WebSocket Server")
|
||||
parser.add_argument("--port", type=int, default=10095)
|
||||
parser.add_argument("--model", type=str, default="FunAudioLLM/Fun-ASR-Nano-2512")
|
||||
@@ -23930,8 +23930,8 @@
|
||||
parser.add_argument(
|
||||
"--decode-max-batch-size",
|
||||
type=int,
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1593" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e494"><span class="dtag badge-f">function</span><h2><code>cli_main()</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1694" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def cli_main():
|
||||
</code></pre><a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1601" target="_blank" class="src-more">View full source on GitHub →</a></details></div>
|
||||
<div class="api-detail" id="e494"><span class="dtag badge-f">function</span><h2><code>cli_main()</code></h2><div class="dmod">funasr.bin.realtime_ws · <a href="https://github.com/modelscope/FunASR/blob/main/funasr/bin/realtime_ws.py#L1702" target="_blank">View on GitHub ↗</a></div><div class="ddoc"><p class="muted">No documentation yet.</p></div><details class="src-block"><summary>📄 Source code</summary><pre><code>def cli_main():
|
||||
args = build_arg_parser().parse_args()
|
||||
asyncio.run(main(args))
|
||||
</code></pre></details></div>
|
||||
|
||||
Reference in New Issue
Block a user