微软的ASR、TTS服务,导致线程数量很多,消耗CPU

Coco Dai 0 信誉分
2024-08-01T02:21:12.73+00:00
<dependency>
    <groupId>com.microsoft.cognitiveservices.speech</groupId>
    <artifactId>client-sdk</artifactId>
    <version>1.30.0</version>
</dependency>

我这边的工作需求,使用微软的ASR、TTS服务。

--

ASR使用流式输入,接收回调:

speechRecognizer.startContinuousRecognitionAsync().get()

PushAudioInputStream audioInputStream = AudioInputStream.createPushStream( AudioStreamFormat.getWaveFormatPCM(poolKey.getSamplesPerSecond(), poolKey.getBitsPerSample(), poolKey.getChannels()));

speechRecognizer.recognizing.addEventListener((s, e) -> {

speechRecognizer.recognized.addEventListener((s, e) -> {

audioInputStream.write(data);

--

TTS使用单次输入,接收回调:

SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(config, null);

speechSynthesizer.SynthesisCompleted.addEventListener((o, e) -> {

speechSynthesizer.Synthesizing.addEventListener((o, e) -> {

speechSynthesizer.SpeakTextAsync(txt);

--

后端使用Java,单机 2核4G。

测试发现,微软SDK的线程数量很多,比如超过400个。ASR、TTS的回调功能,每次回调都创建一个新的线程,导致线程数量太多,非常消耗CPU。

--

问题1:有什么参数,能控制微软SDK的线程数量?

问题2:有什么参数,优化回调功能,减少CPU消耗?

社区中心 讨论问答网站 开始问答
0 个注释 无注释
{count} 票

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。