微软的ASR、TTS服务,导致线程数量很多,消耗CPU
<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消耗?