stt-sdk
Version:
基于 LLMs 的语音转文本 SDK
53 lines (50 loc) • 1.47 kB
text/typescript
/**
* STT 客户端工具合集
*/
export abstract class BaseSTTClientUtil {
/**
* 默认编码选择器
*/
public pickSupportedMime(): string {
const cands = [
"audio/webm;codecs=opus",
"audio/ogg;codecs=opus",
"audio/webm",
];
return cands.find((t) => MediaRecorder.isTypeSupported(t)) ?? "audio/webm";
}
/**
* 默认音频流选择器
*/
public defaultVoiceStream(): Promise<MediaStream> {
return new Promise(async (resolve, reject) => {
try {
const stream = await navigator.mediaDevices.getUserMedia({
audio: {
deviceId: "default",
},
video: false
});
resolve(stream);
}
catch (e) {
reject(e);
}
});
}
/**
* 默认音频流切割器
*/
public defaultSlice(stream: MediaStream, receive_handler: (data: Blob) => void, config: {
mime: string,
sliceTimeout: number
}) {
const mr = new MediaRecorder(stream, { mimeType: config.mime });
mr.ondataavailable = async (e: BlobEvent) => {
if (e.data && e.data.size > 0) {
receive_handler(e.data);
}
};
mr.start(config.sliceTimeout);
}
}