funasr_pipeline.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # Copyright (c) Alibaba, Inc. and its affiliates.
  2. import os
  3. from typing import Any, Dict, List, Sequence, Tuple, Union
  4. import json
  5. import yaml
  6. from modelscope.metainfo import Pipelines
  7. from modelscope.models import Model
  8. from modelscope.outputs import OutputKeys
  9. from modelscope.pipelines.base import Pipeline
  10. from modelscope.pipelines.builder import PIPELINES
  11. from modelscope.utils.audio.audio_utils import (generate_scp_from_url,
  12. update_local_model)
  13. from modelscope.utils.constant import Frameworks, ModelFile, Tasks
  14. from modelscope.utils.logger import get_logger
  15. logger = get_logger()
  16. __all__ = ['FunASRPipeline']
  17. @PIPELINES.register_module(
  18. Tasks.auto_speech_recognition, module_name=Pipelines.funasr_pipeline)
  19. @PIPELINES.register_module(
  20. Tasks.voice_activity_detection, module_name=Pipelines.funasr_pipeline)
  21. @PIPELINES.register_module(
  22. Tasks.language_score_prediction, module_name=Pipelines.funasr_pipeline)
  23. @PIPELINES.register_module(
  24. Tasks.punctuation, module_name=Pipelines.funasr_pipeline)
  25. @PIPELINES.register_module(
  26. Tasks.speaker_diarization, module_name=Pipelines.funasr_pipeline)
  27. @PIPELINES.register_module(
  28. Tasks.speaker_verification, module_name=Pipelines.funasr_pipeline)
  29. @PIPELINES.register_module(
  30. Tasks.speech_separation, module_name=Pipelines.funasr_pipeline)
  31. @PIPELINES.register_module(
  32. Tasks.speech_timestamp, module_name=Pipelines.funasr_pipeline)
  33. @PIPELINES.register_module(
  34. Tasks.emotion_recognition, module_name=Pipelines.funasr_pipeline)
  35. class FunASRPipeline(Pipeline):
  36. """Voice Activity Detection Inference Pipeline
  37. use `model` to create a Voice Activity Detection pipeline.
  38. Args:
  39. model: A model instance, or a model local dir, or a model id in the model hub.
  40. kwargs (dict, `optional`):
  41. Extra kwargs passed into the preprocessor's constructor.
  42. Example:
  43. >>> from modelscope.pipelines import pipeline
  44. >>> p = pipeline(
  45. >>> task=Tasks.voice_activity_detection, model='damo/speech_fsmn_vad_zh-cn-16k-common-pytorch')
  46. >>> audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/vad_example.pcm'
  47. >>> print(p(audio_in))
  48. """
  49. def __init__(self, model: Union[Model, str] = None, **kwargs):
  50. """use `model` to create an vad pipeline for prediction
  51. """
  52. super().__init__(model=model, **kwargs)
  53. def __call__(self, *args, **kwargs) -> Dict[str, Any]:
  54. """
  55. Decoding the input audios
  56. Args:
  57. input('str' or 'bytes'):
  58. Return:
  59. a list of dictionary of result.
  60. """
  61. output = self.model(*args, **kwargs)
  62. return output