17 Transformers - 音频领域的任务类

文章目录

  • 音频
    • [`AudioClassificationPipeline` 类](#AudioClassificationPipeline 类)
      • 构造函数
      • [`call` 方法](#__call__ 方法)
      • [`_sanitize_parameters` 内置方法](#_sanitize_parameters 内置方法)
      • [`_forward` 内置方法](#_forward 内置方法)
      • [`preprocess` 方法](#preprocess 方法)
      • [`postprocess` 方法](#postprocess 方法)
    • [`TextToAudioPipeline` 类](#TextToAudioPipeline 类)
    • [`ZeroShotAudioClassificationPipeline` 类](#ZeroShotAudioClassificationPipeline 类)
    • [`AutomaticSpeechRecognitionPipeline` 类](#AutomaticSpeechRecognitionPipeline 类)

音频

Pipeline AudioClassificationPipeline ChunkPipeline AutomaticSpeechRecognitionPipeline TextToAudioPipeline ZeroShotAudioClassificationPipeline

在音频领域的任务中,包括实现音频分类的 AudioClassificationPipeline 任务类,能够自动识别语音的 AutomaticSpeechRecognitionPipeline 任务类, 能够经文本转化为语音即语音合成的 TextToAudioPipeline 任务类和在没有任何鉴见的样本、训练模型下也能够对给定的语音进行推理分类的 ZeroShotAudioClassificationPipeline 零样本音频分类任务类。

除了AutomaticSpeechRecognitionPipeline 外,都继承自 PipelineAutomaticSpeechRecognitionPipeline 需要"块"处理支持,继承于 ChunkPipeline;但 ChunkPipeline 也是继承自 Pipeline,因此,如果以实例函数实现特定功能的任务,处理流程与 Pipeline 一样。以下将对各个任务类详细描述;但通用部分已在 Pipeline 一节中描述,在此不再对通用部分累述。

AudioClassificationPipeline

AudioClassificationPipeline 实现将给定原始音频在给定的分类模型中评估该音频在既定模型各分类中评估得分,并选择出最符合输入音频的分类的任务。

音频分类任务只针对 Pytorch 框架有效,其他不支持。该类重写了父类的几个方法,包括构造函数、内置的实例函数 __call__,内置的前馈函数_forward 、内置的参数解析函数 _sanitize_parameters、预处理方法 preprocess 和 后处理方法 postprocess

AudioClassificationPipeline 依托 AutoModelForAudioClassification 来具体实现音频分类功能;如果使用 Pipeline 容器类,可通过标识 audio-classification 调用。

构造函数

与父类 Pipeline 相比,需要通过 kwargs 字典参数中提供实例函数 top_kfunction_to_apply

  • top_kint 类型,可选。通过它设置一个值,指定在既定分类中返回评估得分最高的分类数量;默认为5。
  • function_to_applystr 类型,可选 。指定后处理时用的处理方法;默认为 softmax,即使用逻辑回归算法。

__call__ 方法

重写了父类的方法,处理方式和父类一致,列出的原因,是因为它在输入参数要求上比父类更严格一些;输出上也具有指定的格式。函数原型如下:

复制代码
 __call__(self, inputs: Union[np.ndarray, bytes, str], **kwargs)

输入参数

  • inputs: 父类未做限定即 any,这里是复合类型,支持字符串、字节数组或者 numpy.ndarray 类型或者 Dict。如果为字符串类型,则表示输入为一个音频文件路径;如果是字节数组,则表示输入是从音频文件中读取到的音频流;如果是 numpy.ndarray ,则表示该数据已经按照给定的采样率采集的音频形状数组,采样值可能是 Float32Float64;如果是字典类型,字典包括 sampling_rateraw 节点属性,其中 sampling_rate 表示数据的采样率,int 型;rawnumpy.array 类型,表示已经使用 sampling_rate 采样出来的音频形状数组。
  • top_kint 类型,可选。通过它设置一个值,指定在既定分类中返回评估得分最高的分类数量;默认为5。
  • function_to_applystr 类型,可选 。指定后处理时用的处理方法;默认为 softmax,即使用逻辑回归算法。

输出参数

  • 如果是单输入,输出为由 dict 组成的 List ,字典包含 labelscore 属性:

    • labelstr 类型,分类标签;

    • scorefloat 类型,评估得分。

  • 如果是多输入,则输出为 list,列表的每一项的结构与单输入相同。

_sanitize_parameters 内置方法

该函数与父类的不同在于显示定义了 top_kfunction_to_apply 参数。其实这两个参数是通过使用构造函数创建任务实例或者通过调用实例执行时传入的。原型如下:

复制代码
_sanitize_parameters(self, top_k=None, function_to_apply=None, **kwargs)

它所使用的实例函数 top_kfunction_to_apply 已经在其他节中描述,在此不再累述。

_forward 内置方法

该函数将输入通过调用 model 实例处理后输出处理后的结果,原型如下:

复制代码
_forward(self, model_inputs)

preprocess 方法

根据输入参数的具体类型对原始音频输入处理成为可用的音频形状数组,然后对输入的音频形状进行特征提取后转换 Pytorch 框架所需的输出。函数原型如下:

复制代码
preprocess(self, inputs)

postprocess 方法

对通过模型预测的结果通过回归算法计算在各分类的得分情况并返回得分结果字典。原型如下:

复制代码
postprocess(self, model_outputs, top_k=5, function_to_apply="softmax")

输入参数:

  • model_outputs:预测后得到的结果集;
  • top_k:设置返回得分排名最高的分类数量
  • function_to_apply: 后处理函数,默认为 softmax回归算法

输出参数:输入为由字典类型构成的列表,其中包含 labelscore 属性,labelstr 类型,分类标签;scorefloat 类型,得分。

TextToAudioPipeline

TextToAudioPipeline 具体任务为将文本转换为语音。该类不支持 TenseFlow 框架。

该类重写了父类的几个方法,包括构造函数、内置的实例函数 __call__,内置的前馈函数_forward 、内置的参数解析函数 _sanitize_parameters、预处理方法 preprocess 和 后处理方法 postprocess

TextToAudioPipeline中将文本生成语音的具体实现是通过 AutoModelForTextToWaveform 类或 AutoModelForTextToSpectrogram 类来完成的。如果使用 Pipeline 容器类,可通过标识 text-to-speech 调用。

构造函数

函数原型如下:

复制代码
__init__(self, *args, vocoder=None, sampling_rate=None, **kwargs)

其中:

  • args:位置函数参数。
  • vocoder:人生编码器,默认为 None
  • sampling_rateint 类型,【可选 】,默认为 None。 生成音频波的音频采样率
  • kwargs:额外的特定字典参数。

实例函数

函数原型:

复制代码
__call__(self, text_inputs: Union[str, List[str]], **forward_params)

其中:

  • text_inputs:支持 str 类型和 list 类型;必选 。如果是 str 类型则表示一段文本;如果是 list,则表示是一组文本。
  • preprocess_params:预处理所需要的配置参数字典;可选 。可包含在 forward_params 参数字典中。
  • forward_params:前馈处理所需要的配置参数字典;可选 。可包含在 forward_params 参数字典中。
  • generate_kwargs:后处理所需的配置参数字典;可选 。可包含在 forward_params 参数字典中。

返回结果

  • 如果是单输入,返回结果是一个 Dict 类型的值;字典至少包含 audiosampling_rate 属性键:-

    • sampling_rateint 型。生成音频的采样率。
    • audio numpy.ndarray 类型。音频波形数据
  • 如果是多输入,则返回由单输入处理返回的结果结构构成的列表。

在获取到合成结果后,需要再手工处理转换成音频流或者保存为音频文件。

ZeroShotAudioClassificationPipeline

ZeroShotAudioClassificationPipeline 类实现的是在没有可参考的样本下将给定的语音在新提供的分类上评估得分,并将评分结果输出的功能,称之为"零样本音频分类"。该实现仅支持 Pytorch 框架。

ZeroShotAudioClassificationPipeline 依托 ClapModel 实现具体功能。如果使用 Pipeline 容器类,可通过标识 zero-shot-audio-classification 调用。

构造函数

函数原型为:

复制代码
__init__(self, **kwargs)

其中:

  • kwargs:额外的特定字典参数。

实例函数

函数原型:

复制代码
__call__(self, audios: Union[np.ndarray, bytes, str], **kwargs)
  • audios:复合类型,支持 str 类型,或 numpy.array 或者 list类型。必选

    • 如果是 str 类型,则表示以一个音频文件地址,可以是本地文件地址,也可以是一个 http 链接;

    • 如果是 numpy.array,则表示是一个音频采样值数组;

    • 如果是 list 类型,如果列表值为 str 类型,则表示为一组音频文件地址;如果值为 numpy.array, 则表示为一组由音频字节数组组成的列表。

  • candidate_labels:由 str构成的 list必选。为音频分类评估使用的新定义的的分类标签组合。

  • hypothesis_templatestr 类型,可选 ,默认值 "This is a sound of {}"。格式化模板,结合 candidate_labels 格式化结果的输出。

返回结果

  • 如果是单输入,则返回由 dict 组成的 list,其中组成列表的字典值包含 labelscore 属性键:

    • labelstr 类型。分类标签名;
    • scorefloat 类型。分类标签的评估得分 。
  • 如果是多输入,则返回如单输入返回的结构组成的列表

AutomaticSpeechRecognitionPipeline

AutomaticSpeechRecognitionPipeline 完成将给定的语音转换为文本的功能。和上面的类不同,它继承自 ChunkPipeline 。相较于 PipelineChunkPipeline 支持对构造函数分块,然后对每个块分别处理。

AutomaticSpeechRecognitionPipeline要实现自动语音识别功能,需要 ffmpeg 库支持。如果使用 Pipeline 容器类,可通过标识 automatic-speech-recognition 调用。

构造函数

函数原型:

复制代码
__init__(
        self,
        model: "PreTrainedModel",
        feature_extractor: Union["SequenceFeatureExtractor", str] = None,
        tokenizer: Optional[PreTrainedTokenizer] = None,
        decoder: Optional[Union["BeamSearchDecoderCTC", str]] = None,
        device: Union[int, "torch.device"] = None,
        torch_dtype: Optional[Union[str, "torch.dtype"]] = None,
        **kwargs,
    )

其中:

  • modelstr 类型 或 PreTrainedModel子类。模型的路径或模型标识。
  • feature_extractorstr 类型或者 SequenceFeatureExtractor 类型。【可选 】,默认为None。特征提取器,如果需要自定义的提取器,通过这个参数配置。
  • tokenizerPreTrainedTokenizer 类型,【可选】,默认为None。分词器。
  • decoderstr 类型或 BeamSearchDecoderCTC 类型,【可选】,默认为None。解码器,用来给源音频解码用
  • device:支持 strint简单类型,或是 torch.device 枚举类型。可选。设备类型。
  • torch_dtype:支持 str 简单类型或 torch.dtype 枚举类型。可选。浮点类型。
  • kwargs:额外的特定字典参数。

实例函数

函数原型:

复制代码
__call__(self, inputs: Union[np.ndarray, bytes, str], **kwargs )

其中:

  • inputs:支持 str类型,或 bytes 类型或者 numpy.array类型。必选

    • 如果是 str 类型,则表示一个音频文件地址或者一个 http链接;它需要 ffmpeg 库支持。

    • 如果是 bytes 类型或 numpy.array 类型,则表示是一个原始的音频波字节流

  • chunk_length_sfloat 类型,可选,默认为0。设置每个分块的输入长度;如果该值为0,则不再对构造函数进行分块。

  • stride_length_sfloat 类型,为每个块设置左右步幅的长度,可选 ,默认为 chunk_length_s / 6。如果该值大于0,就可以通过上下文来推断字词,比没有上下文更好。

  • ignore_warningbool 型,是否忽略警告,可选

  • return_timestampsbool 类型或 str 类型,是否在返回时返回时间戳,可选 。对于 CTC 模型(即Wav2Vec2,HuBERT 等):值为 word ,则表示为以词为单位生成时间戳;如果是 char,则表示为以字符为单位生成时间戳;对于 Whisper 模型:如果值为 word 则意义与 CTC相同;值为 True 时,则表示是按词分割得到的段来生成时间戳。。

  • return_languagebool 型,是否返回语种,可选

  • max_new_tokensint 类型,设置生成标记的最大长度,可选。用于控制生成文本的长度,以防止生成结果过长。

  • decoder_kwargs:解码器所需的实例函数集合。

  • generate_kwargs:生成所需的实例函数集合。

返回结果

  • 如果是单一输入,返回结果为一个字典实例,包括 text 属性键,值为识别出来的文本;还包括其他的附属参数如tokenslogitsis_laststridetoken_timestampsstart_offsetend_offset等。

  • 如果是多个输入,则返回如单一输入返回相同结构组成的列表。

相关推荐
TEL189246224772 小时前
IT6636:3输入1输出HDMI 2.1V重定时开关,内置MCU
音视频·实时音视频·视频编解码
简鹿视频3 小时前
怎么把mkv视频格式转换为asf视频格式
ffmpeg·音视频·实时音视频·视频编解码·格式工厂
八月的雨季 最後的冰吻3 小时前
FFmepg-- 37-ffplay源码- 播放器中音频输出模块
ffmpeg·音视频
EasyCVR3 小时前
编辑器分发RTSP地址接入到视频汇聚平台EasyCVR离线原因排查
编辑器·音视频
kkk_皮蛋3 小时前
WebRTC 视频编码基础 (VP8/VP9/H.264/AV1)
音视频·webrtc·vp8
科技小E3 小时前
EasyGBS助力平安乡村搭建无线视频联网监控系统
音视频
程序猿小郑3 小时前
Quill 编辑器自定义视频模块:将 iframe 替换为 video 标签
编辑器·音视频
线束线缆组件品替网4 小时前
TE Linx RF 物联网射频模块的 RF 线缆连接设计思路
数码相机·物联网·测试工具·电脑·音视频·pcb工艺
EasyCVR4 小时前
视频融合平台EasyCVR赋能旅游景区构建全场景可视化监控新体系
音视频·旅游