文章目录
- 音频
- `AudioClassificationPipeline` 类
- 构造函数
- `__call__` 方法
- `_sanitize_parameters` 内置方法
- `_forward` 内置方法
- `preprocess` 方法
- `postprocess` 方法
- `TextToAudioPipeline` 类
- 构造函数
- 实例函数
- 返回结果
- `ZeroShotAudioClassificationPipeline` 类
- 构造函数
- 实例函数
- 返回结果
- `AutomaticSpeechRecognitionPipeline` 类
- 构造函数
- 实例函数
- 返回结果
音频
在音频领域的任务中,包括实现音频分类的AudioClassificationPipeline任务类,能够自动识别语音的AutomaticSpeechRecognitionPipeline任务类, 能够经文本转化为语音即语音合成的TextToAudioPipeline任务类和在没有任何鉴见的样本、训练模型下也能够对给定的语音进行推理分类的ZeroShotAudioClassificationPipeline零样本音频分类任务类。
除了AutomaticSpeechRecognitionPipeline外,都继承自Pipeline。AutomaticSpeechRecognitionPipeline需要“块”处理支持,继承于ChunkPipeline;但ChunkPipeline也是继承自Pipeline,因此,如果以实例函数实现特定功能的任务,处理流程与Pipeline一样。以下将对各个任务类详细描述;但通用部分已在Pipeline一节中描述,在此不再对通用部分累述。
AudioClassificationPipeline类
AudioClassificationPipeline实现将给定原始音频在给定的分类模型中评估该音频在既定模型各分类中评估得分,并选择出最符合输入音频的分类的任务。
音频分类任务只针对Pytorch框架有效,其他不支持。该类重写了父类的几个方法,包括构造函数、内置的实例函数__call__,内置的前馈函数_forward、内置的参数解析函数_sanitize_parameters、预处理方法preprocess和 后处理方法postprocess。
AudioClassificationPipeline依托AutoModelForAudioClassification来具体实现音频分类功能;如果使用Pipeline容器类,可通过标识audio-classification调用。
构造函数
与父类Pipeline相比,需要通过kwargs字典参数中提供实例函数top_k和function_to_apply。
top_k:int类型,可选。通过它设置一个值,指定在既定分类中返回评估得分最高的分类数量;默认为5。function_to_apply:str类型,可选。指定后处理时用的处理方法;默认为softmax,即使用逻辑回归算法。
__call__方法
重写了父类的方法,处理方式和父类一致,列出的原因,是因为它在输入参数要求上比父类更严格一些;输出上也具有指定的格式。函数原型如下:
__call__(self, inputs: Union[np.ndarray, bytes, str], **kwargs)输入参数:
inputs: 父类未做限定即any,这里是复合类型,支持字符串、字节数组或者numpy.ndarray类型或者Dict。如果为字符串类型,则表示输入为一个音频文件路径;如果是字节数组,则表示输入是从音频文件中读取到的音频流;如果是numpy.ndarray,则表示该数据已经按照给定的采样率采集的音频形状数组,采样值可能是Float32或Float64;如果是字典类型,字典包括sampling_rate和raw节点属性,其中sampling_rate表示数据的采样率,int型;raw是numpy.array类型,表示已经使用sampling_rate采样出来的音频形状数组。top_k:int类型,可选。通过它设置一个值,指定在既定分类中返回评估得分最高的分类数量;默认为5。function_to_apply:str类型,可选。指定后处理时用的处理方法;默认为softmax,即使用逻辑回归算法。
输出参数:
如果是单输入,输出为由
dict组成的List,字典包含label和score属性:label:str类型,分类标签;score:float类型,评估得分。
如果是多输入,则输出为
list,列表的每一项的结构与单输入相同。
_sanitize_parameters内置方法
该函数与父类的不同在于显示定义了top_k和function_to_apply参数。其实这两个参数是通过使用构造函数创建任务实例或者通过调用实例执行时传入的。原型如下:
_sanitize_parameters(self, top_k=None, function_to_apply=None, **kwargs)它所使用的实例函数top_k和function_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回归算法
输出参数:输入为由字典类型构成的列表,其中包含label和score属性,label为str类型,分类标签;score为float类型,得分。
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_rate:int类型,【可选】,默认为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类型的值;字典至少包含audio和sampling_rate属性键:-sampling_rate:int型。生成音频的采样率。audionumpy.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_template:str类型,可选,默认值"This is a sound of {}"。格式化模板,结合candidate_labels格式化结果的输出。
返回结果
如果是单输入,则返回由
dict组成的list,其中组成列表的字典值包含label和score属性键:label:str类型。分类标签名;score:float类型。分类标签的评估得分 。
如果是多输入,则返回如单输入返回的结构组成的列表
AutomaticSpeechRecognitionPipeline类
AutomaticSpeechRecognitionPipeline完成将给定的语音转换为文本的功能。和上面的类不同,它继承自ChunkPipeline。相较于Pipeline,ChunkPipeline支持对构造函数分块,然后对每个块分别处理。
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, )其中:
model:str类型 或PreTrainedModel子类。模型的路径或模型标识。feature_extractor:str类型或者SequenceFeatureExtractor类型。【可选】,默认为None。特征提取器,如果需要自定义的提取器,通过这个参数配置。tokenizer:PreTrainedTokenizer类型,【可选】,默认为None。分词器。decoder:str类型或BeamSearchDecoderCTC类型,【可选】,默认为None。解码器,用来给源音频解码用device:支持str或int简单类型,或是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_s:float类型,可选,默认为0。设置每个分块的输入长度;如果该值为0,则不再对构造函数进行分块。stride_length_s:float类型,为每个块设置左右步幅的长度,可选,默认为chunk_length_s / 6。如果该值大于0,就可以通过上下文来推断字词,比没有上下文更好。ignore_warning:bool型,是否忽略警告,可选。return_timestamps:bool类型或str类型,是否在返回时返回时间戳,可选。对于CTC模型(即Wav2Vec2,HuBERT等):值为word,则表示为以词为单位生成时间戳;如果是char,则表示为以字符为单位生成时间戳;对于Whisper模型:如果值为word则意义与CTC相同;值为True时,则表示是按词分割得到的段来生成时间戳。。return_language:bool型,是否返回语种,可选。max_new_tokens:int类型,设置生成标记的最大长度,可选。用于控制生成文本的长度,以防止生成结果过长。decoder_kwargs:解码器所需的实例函数集合。generate_kwargs:生成所需的实例函数集合。
返回结果
如果是单一输入,返回结果为一个字典实例,包括
text属性键,值为识别出来的文本;还包括其他的附属参数如tokens,logits,is_last,stride,token_timestamps,start_offset,end_offset等。如果是多个输入,则返回如单一输入返回相同结构组成的列表。