paddlespeech.s2t.frontend.audio模块

包含音频段类。

class paddlespeech.s2t.frontend.audio.AudioSegment(samples, sample_rate)[来源]

基础: object

单声道音频片段抽象。

Parameters:
  • 样本 (ndarray.float32) -- 音频样本 [样本数量 x 通道数量].

  • sample_rate (int) -- 音频采样率。

Raises:

类型错误 -- 如果样本数据类型不是浮点数或整数。

Attributes:
duration

返回音频时长。

num_samples

返回样本数量。

rms_db

返回音频的均方根能量,单位为分贝。

sample_rate

返回音频采样率。

samples

返回音频样本。

方法

add_noise(noise, snr_dB[, ...])

在特定的信噪比下添加给定的噪声段。

change_speed(speed_rate)

通过线性插值改变音频速度。

concatenate(*segments)

将任意数量的音频片段连接在一起。

convolve(impulse_segment[, allow_resample])

将此音频片段与给定的脉冲片段卷积。

convolve_and_normalize(impulse_segment[, ...])

对结果音频片段进行卷积和归一化,使其具有与输入信号相同的平均功率。

from_bytes(bytes)

从包含音频样本的字节字符串创建音频片段。

from_file(file[, infos])

从音频文件创建音频片段。

from_pcm(samples, sample_rate)

从包含音频样本的字节字符串创建音频片段。

from_sequence_file(filepath)

从序列文件创建音频片段。

gain_db(gain)

对样本应用分贝增益。

make_silence(duration, sample_rate)

创建一个给定持续时间和采样率的静音音频片段。

normalize([target_db, max_gain_db])

将音频标准化为所需的RMS值(以分贝为单位)。

normalize_online_bayesian(target_db, ...[, ...])

使用与生产兼容的在线/因果算法归一化音频。

pad_silence(duration[, sides])

通过静默的时间填充这个音频样本。

random_subsegment(subsegment_length[, rng])

随机剪切指定长度的音频片段。

resample(target_sample_rate[, filter])

将音频重新采样到目标采样率。

shift(shift_ms)

在时间上移动音频。

slice_from_file(file[, start, end])

加载音频的一小部分,而无需将整个文件加载到内存中,这样做可能非常浪费。

subsegment([start_sec, end_sec])

在给定边界之间切割音频片段。

superimpose(other)

将另一个段的样本添加到该段的样本中(按样本添加,而不是段连接)。

to([dtype])

创建一个 dtype 音频内容。

to_bytes([dtype])

创建一个包含音频内容的字节字符串。

to_wav_file(filepath[, dtype])

将音频片段保存为wav文件到磁盘。

add_noise(noise, snr_dB, allow_downsampling=False, max_gain_db=300.0, rng=None)[来源]

在特定的信噪比下添加给定的噪声段。如果噪声段比此段长,则从中随机抽取一个匹配长度的子段并代替使用。

请注意,这是一个就地转换。

Parameters:
  • 噪声 (音频段) -- 要添加的噪声信号。

  • snr_dB (float) -- 信噪比,以分贝为单位。

  • allow_downsampling (bool) -- 是否允许将噪声信号下采样以匹配基本信号的采样率。

  • max_gain_db (float) -- 应用到噪声信号的最大增益量 在将其添加之前。这是为了防止尝试 对零信号应用无限增益。

  • rng (|random.Random) -- 随机数生成器状态。

Raises:

值错误 -- 如果在不允许降采样的情况下,两段音频的采样率不匹配,或者如果噪声段的持续时间短于原始音频段。

change_speed(speed_rate)[来源]

通过线性插值改变音频速度。

请注意,这是一个就地转换。

Parameters:

speed_rate (float) -- 速度变化率: speed_rate > 1.0,音频加速; speed_rate = 1.0,保持不变; speed_rate < 1.0,音频减速; speed_rate <= 0.0,不允许,引发 ValueError。

Raises:

值错误 -- 如果 speed_rate <= 0.0。

classmethod concatenate(*segments)[来源]

将任意数量的音频片段连接在一起。

Parameters:

*segments --

要连接的输入音频片段。

Returns:

音频片段实例作为连接结果。

Return type:

AudioSegment

Raises:
  • 值错误 -- 如果段的数量为零,或者如果任何段的样本率不匹配。

  • 类型错误 -- 如果任何片段不是 AudioSegment 实例。

convolve(impulse_segment, allow_resample=False)[来源]

将此音频段与给定的脉冲段进行卷积。

请注意,这是一个就地转换。

Parameters:
  • impulse_segment (AudioSegment) -- 冲击响应段。

  • allow_resample (bool) -- 表示当 impulse_segment 的采样率与此信号不同时,是否允许重采样。

Raises:

值错误 -- 如果在不允许重采样时,两个音频段之间的采样率不匹配。

convolve_and_normalize(impulse_segment, allow_resample=False)[来源]

对结果音频片段进行卷积和归一化,使其与输入信号具有相同的平均功率。

请注意,这是一个就地转换。

Parameters:
  • impulse_segment (AudioSegment) -- 冲击响应段。

  • allow_resample (bool) -- 指示当 impulse_segment 的采样率与此信号不同 时,是否允许重采样。

property duration

返回音频时长。

Returns:

音频持续时间(秒)。

Return type:

浮点数

classmethod from_bytes(bytes)[来源]

从包含音频样本的字节字符串创建音频片段。

Parameters:

字节 (字符串) -- 包含音频样本的字节字符串。

Returns:

音频片段实例。

Return type:

AudioSegment

classmethod from_file(file, infos=None)[来源]

从音频文件创建音频片段。

Args:

filepath (str|file):音频文件的文件路径或文件对象。
infos (TarLocalData, 可选):tar2obj 和 tar2infos。默认为 None。

Returns:

AudioSegment: 音频片段实例。

classmethod from_pcm(samples, sample_rate)[来源]

从包含音频样本的字节字符串创建音频段。 :param samples: 音频样本 [num_samples x num_channels]。 :type samples: numpy.ndarray :param sample_rate: 音频采样率。 :type sample_rate: int :return: 音频段实例。 :rtype: AudioSegment

classmethod from_sequence_file(filepath)[来源]

从序列文件创建音频片段。序列文件是一个二进制文件,包含多个音频文件的集合,头部有几个头字节指示每个音频字节数据块的偏移量。

格式是:

4 字节(整型,版本), 4 字节(整型,语音数量), 4 字节(整型,每个头部字节数), [bytes_per_header*(num_utterance+1)] 字节(每个音频的偏移量), 第一个语音的音频字节数据, 第二个语音的音频字节数据, ......

序列文件名必须以 ".seqbin" 结尾。序列文件 "xxx.seqbin" 中第 5 次发声的音频文件名必须为 "xxx.seqbin_5",其中 "5" 表示该序列文件中的发声索引(从 1 开始)。

Parameters:

filepath (str) -- 序列文件的文件路径。

Returns:

音频片段实例。

Return type:

AudioSegment

gain_db(gain)[来源]

对样本应用增益(以分贝为单位)。

请注意,这是一个就地转换。

Parameters:

增益 (浮点数|一维数组) -- 应用于样本的分贝增益。

classmethod make_silence(duration, sample_rate)[来源]

创建一个指定持续时间和采样率的静默音频段。

Parameters:
  • duration (float) -- 静音的持续时间(秒)。

  • sample_rate (float) -- 采样率。

Returns:

静默音频段实例,持续时间为给定值。

Return type:

AudioSegment

normalize(target_db=-20, max_gain_db=300.0)[来源]

将音频归一化为所需的分贝RMS值。

请注意,这是一个就地转换。

Parameters:
  • target_db (float) -- 目标RMS值,以分贝为单位。该值应小于0.0,因为0.0是满幅音频。

  • max_gain_db (float) -- 可以应用于归一化的最大增益值,以分贝(dB)表示。此措施是为了防止在试图归一化一个由全零组成的信号时出现nans。

Raises:

ValueError -- 如果用于将段归一化到 target_db 值所需的增益超过 max_gain_db。

normalize_online_bayesian(target_db, prior_db, prior_samples, startup_delay=0.0)[来源]

使用与生产兼容的在线/因果算法对音频进行归一化。该算法采用指数似然和伽马先验,在样本非常少的情况下仍然能够在线估计RMS。

请注意,这是一个就地转换。

Parameters:
  • target_db -- 目标RMS值(以分贝为单位)。

  • prior_db (float) -- 先前的RMS估计(以分贝为单位)。

  • prior_samples (float) -- 先验强度,以样本数量表示。

  • startup_delay (float) -- 默认 0.0s。如果提供,函数将在应用在线归一化之前,累积前 startup_delay 秒的统计数据。

property num_samples

返回样本数量。

Returns:

样本数量。

Return type:

整型

pad_silence(duration, sides='both')[来源]

在这个音频样本前添加一段静音。

请注意,这是一个就地转换。

Parameters:
  • duration (float) -- 用于填充的静音时长(以秒为单位)。

  • sides (str) -- 填充的位置: 'beginning' - 在开头添加静音; 'end' - 在结尾添加静音; 'both' - 在开头和结尾都添加静音。

Raises:

值错误 -- 如果边长不受支持。

random_subsegment(subsegment_length, rng=None)[来源]

随机剪切指定长度的音频片段。

请注意,这是一个就地转换。

Parameters:
  • subsegment_length (float) -- 子段长度(以秒为单位)。

  • rng (random.Random) -- 随机数生成器状态。

Raises:

值错误 -- 如果子区段的长度大于原始区段。

resample(target_sample_rate, filter='kaiser_best')[来源]

将音频重新采样到目标采样率。

请注意,这是一个就地转换。

Parameters:
  • target_sample_rate (int) -- 目标采样率。

  • filter (str) -- 使用的重采样滤波器之一 {'kaiser_best', 'kaiser_fast'}。

property rms_db

返回音频的均方根能量,单位为分贝。

Returns:

以分贝表示的均方根能量。

Return type:

浮点数

property sample_rate

返回音频采样率。

Returns:

音频采样率。

Return type:

整型

property samples

返回音频样本。

Returns:

音频样本。

Return type:

ndarray

shift(shift_ms)[来源]

在时间上移动音频。如果 shift_ms 为正,则提前移动时间;如果为负,则延迟移动时间。静音部分被填充以保持时长不变。

请注意,这是一个就地转换。

Parameters:

shift_ms (float) -- 在毫秒中移动时间。如果为正,提前移动时间;如果为负,延迟移动时间。

Raises:

值错误 -- 如果 shift_ms 超过音频持续时间。

classmethod slice_from_file(file, start=None, end=None)[来源]

在不将整个文件加载到内存中的情况下,加载一小部分音频,这样做可以避免极其浪费。

Parameters:
  • 文件 (字符串|文件) -- 输入音频文件路径或文件对象。

  • 开始 (浮动) -- 开始时间(单位为秒)。如果开始时间为负,则从末尾回绕。如果未提供,则此函数从开始读取。

  • end (float) -- 结束时间,以秒为单位。如果结束时间为负数,它将从结尾开始循环。如果未提供,默认行为是读取文件的结尾。

Returns:

AudioSegment 实例指定的输入音频文件的切片。

Return type:

AudioSegment

Raises:

值错误 -- 如果开始或结束设置不正确,例如超出 时间的范围。

subsegment(start_sec=None, end_sec=None)[来源]

在给定边界之间剪切音频片段。

请注意,这是一个就地转换。

Parameters:
  • start_sec (float) -- 子段开始时间(秒)。

  • end_sec (float) -- 子段结束时间(以秒为单位)。

Raises:

ValueError -- 如果 start_sec 或 end_sec 设置不正确,例如超出时间范围。

superimpose(other)[来源]

将来自另一个片段的样本添加到该片段的样本中(逐样本添加,而不是片段连接)。

请注意,这是一个就地转换。

Parameters:

其他 (音频片段) -- 包含要添加的样本的片段。

Raises:
  • 类型错误 -- 如果两个段的类型不匹配。

  • 值错误 -- 如果两个段的采样率不相等,或者段的长度不匹配。

to(dtype='int16')[来源]

创建一个 dtype 音频内容。

Parameters:

dtype (str) -- 导出样本的数据类型。选项:'int16', 'int32', 'float32', 'float64'。默认是 'float32'。

Returns:

包含dtype音频内容的np.ndarray。

Return type:

str

to_bytes(dtype='float32')[来源]

创建一个包含音频内容的字节字符串。

Parameters:

dtype (str) -- 导出样本的数据类型。选项:'int16','int32','float32','float64'。默认是'float32'。

Returns:

包含音频内容的字节字符串。

Return type:

str

to_wav_file(filepath, dtype='float32')[来源]

将音频片段保存为wav文件到磁盘。

Parameters:
  • filepath (str|file) -- WAV 文件路径或文件对象,用于保存音频片段。

  • dtype (str) -- 音频文件的子类型。选项:'int16','int32', 'float32','float64'。默认是 'float32'。

Raises:

类型错误 -- 如果不支持的数据类型。