|
- import os.path
- import shutil
- import unittest
-
- from modelscope.fileio import File
- from modelscope.metainfo import Pipelines
- from modelscope.pipelines import pipeline
- from modelscope.utils.constant import Tasks
- from modelscope.utils.test_utils import test_level
-
- NEAREND_MIC_URL = 'https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/AEC/sample_audio/nearend_mic.wav'
- FAREND_SPEECH_URL = 'https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/AEC/sample_audio/farend_speech.wav'
- NEAREND_MIC_FILE = 'nearend_mic.wav'
- FAREND_SPEECH_FILE = 'farend_speech.wav'
-
- AEC_LIB_URL = 'http://isv-data.oss-cn-hangzhou.aliyuncs.com/ics%2FMaaS%2FAEC%2Flib%2Flibmitaec_pyio.so' \
- '?Expires=1664085465&OSSAccessKeyId=LTAIxjQyZNde90zh&Signature=Y7gelmGEsQAJRK4yyHSYMrdWizk%3D'
- AEC_LIB_FILE = 'libmitaec_pyio.so'
-
-
- def download(remote_path, local_path):
- local_dir = os.path.dirname(local_path)
- if len(local_dir) > 0:
- if not os.path.exists(local_dir):
- os.makedirs(local_dir)
- with open(local_path, 'wb') as ofile:
- ofile.write(File.read(remote_path))
-
-
- class SpeechSignalProcessTest(unittest.TestCase):
-
- def setUp(self) -> None:
- self.model_id = 'damo/speech_dfsmn_aec_psm_16k'
- # A temporary hack to provide c++ lib. Download it first.
- download(AEC_LIB_URL, AEC_LIB_FILE)
-
- @unittest.skipUnless(test_level() >= 2, 'skip test in current test level')
- def test_run(self):
- download(NEAREND_MIC_URL, NEAREND_MIC_FILE)
- download(FAREND_SPEECH_URL, FAREND_SPEECH_FILE)
- input = {
- 'nearend_mic': NEAREND_MIC_FILE,
- 'farend_speech': FAREND_SPEECH_FILE
- }
- aec = pipeline(
- Tasks.speech_signal_process,
- model=self.model_id,
- pipeline_name=Pipelines.speech_dfsmn_aec_psm_16k)
- aec(input, output_path='output.wav')
-
-
- if __name__ == '__main__':
- unittest.main()
|