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:
- 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:
- 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:
- classmethod make_silence(duration, sample_rate)[来源]
创建一个指定持续时间和采样率的静默音频段。
- Parameters:
duration (float) -- 静音的持续时间(秒)。
sample_rate (float) -- 采样率。
- Returns:
静默音频段实例,持续时间为给定值。
- Return type:
- 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:
- 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