pub struct StreamingSession { /* private fields */ }Expand description
流式会话的便捷封装。
包装一个 Session,自动注册内部事件收集器,把 shim 的逐事件回调
缓冲为 Vec,使调用方无需手动管理回调 + 锁。典型用法(流式 ASR):
use audio_cpp::{Backend, Model, Registry, Request, RunMode, TaskKind};
use audio_cpp::session::StreamingSession;
let session = model.create_task_session(
TaskKind::Asr, RunMode::Streaming, Backend::Cpu, 0, 1, None,
)?;
let mut stream = StreamingSession::from_session(session);
stream.start(Request::stream_asr().option("language", "auto"))?;
// 每块音频送入后,取出该块触发的全部事件(partial_text / is_final)
let samples: Vec<f32> = vec![0.0; 512];
let events = stream.push_audio(&samples, 16000, 1, 0)?;
for ev in &events {
if let Some(t) = &ev.partial_text {
println!("增量: {}", t.text);
}
}
let result = stream.finish()?;与底层 Session::process_audio 不同,push_audio 返回该块触发的
所有事件(经内部回调收集),而不是单个事件。不消费音频块的模型族
(如流式 TTS)可跳过 push_audio,直接 start → finish。
Implementations§
Source§impl StreamingSession
impl StreamingSession
Sourcepub fn from_session(session: Session) -> Self
pub fn from_session(session: Session) -> Self
从现有会话包装(流式任务)。
Sourcepub fn from_model(
model: &Model,
task: TaskKind,
backend: Backend,
device: i32,
threads: i32,
session_options: Option<&str>,
) -> Result<Self, Error>
pub fn from_model( model: &Model, task: TaskKind, backend: Backend, device: i32, threads: i32, session_options: Option<&str>, ) -> Result<Self, Error>
从模型创建流式会话并包装(等价于
create_task_session(Streaming) + Self::from_session)。
§Errors
底层无法创建流式会话时返回对应 Error 变体。
Sourcepub fn push_audio(
&self,
samples: &[f32],
sample_rate: i32,
channels: i32,
start_sample: i64,
) -> Result<Vec<StreamEvent>, Error>
pub fn push_audio( &self, samples: &[f32], sample_rate: i32, channels: i32, start_sample: i64, ) -> Result<Vec<StreamEvent>, Error>
送入一段音频,返回该块触发的全部流事件。
等价于先清空内部缓冲、调用 Session::process_audio、再取出缓冲
中的全部事件。samples 为 float 采样,start_sample 为相对输入
流的起始采样点。
§Errors
C ABI 调用失败时返回对应 Error 变体。
Sourcepub fn finish(&self) -> Result<TaskResult, Error>
pub fn finish(&self) -> Result<TaskResult, Error>
Sourcepub fn session(&self) -> &Session
pub fn session(&self) -> &Session
底层会话引用。
注意:经此引用调用 Session::set_event_callback 会替换
StreamingSession 的内部事件收集器,导致 push_audio 收不到事件。
如需自定义回调,请直接使用 Session 而非本包装。
Sourcepub fn backend(&self) -> Backend
pub fn backend(&self) -> Backend
创建时请求的计算后端(等价于 Session::backend)。
Sourcepub fn session_mut(&mut self) -> &mut Session
pub fn session_mut(&mut self) -> &mut Session
底层会话可变引用。
Trait Implementations§
impl Send for StreamingSession
Auto Trait Implementations§
impl !Freeze for StreamingSession
impl !RefUnwindSafe for StreamingSession
impl !Sync for StreamingSession
impl !UnwindSafe for StreamingSession
impl Unpin for StreamingSession
impl UnsafeUnpin for StreamingSession
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more