Browse Source

fix: failed to update sc_config_file concurrently

master
bin.xue 3 years ago
parent
commit
e1dd996460
1 changed files with 9 additions and 2 deletions
  1. +9
    -2
      modelscope/models/audio/kws/farfield/model.py

+ 9
- 2
modelscope/models/audio/kws/farfield/model.py View File

@@ -1,6 +1,7 @@
# Copyright (c) Alibaba, Inc. and its affiliates. # Copyright (c) Alibaba, Inc. and its affiliates.


import os import os
import tempfile
from typing import Dict, Optional from typing import Dict, Optional


from modelscope.metainfo import Models from modelscope.metainfo import Models
@@ -36,12 +37,15 @@ class FSMNSeleNetV2Decorator(TorchModel):
else: else:
sc_config_file = os.path.join(model_dir, self.SC_CONFIG) sc_config_file = os.path.join(model_dir, self.SC_CONFIG)
model_txt_file = os.path.join(model_dir, self.MODEL_TXT) model_txt_file = os.path.join(model_dir, self.MODEL_TXT)
self.tmp_dir = tempfile.TemporaryDirectory()
new_config_file = os.path.join(self.tmp_dir.name, self.SC_CONFIG)

self._sc = None self._sc = None
if os.path.exists(model_txt_file): if os.path.exists(model_txt_file):
conf_dict = dict(mode=56542, kws_model=model_txt_file) conf_dict = dict(mode=56542, kws_model=model_txt_file)
update_conf(sc_config_file, sc_config_file, conf_dict)
update_conf(sc_config_file, new_config_file, conf_dict)
import py_sound_connect import py_sound_connect
self._sc = py_sound_connect.SoundConnect(sc_config_file)
self._sc = py_sound_connect.SoundConnect(new_config_file)
self.size_in = self._sc.bytesPerBlockIn() self.size_in = self._sc.bytesPerBlockIn()
self.size_out = self._sc.bytesPerBlockOut() self.size_out = self._sc.bytesPerBlockOut()
else: else:
@@ -49,6 +53,9 @@ class FSMNSeleNetV2Decorator(TorchModel):
f'Invalid model directory! Failed to load model file: {model_txt_file}.' f'Invalid model directory! Failed to load model file: {model_txt_file}.'
) )


def __del__(self):
self.tmp_dir.cleanup()

def forward(self, input: Dict[str, Tensor]) -> Dict[str, Tensor]: def forward(self, input: Dict[str, Tensor]) -> Dict[str, Tensor]:
return self.model.forward(input) return self.model.forward(input)




Loading…
Cancel
Save