audio

class janim.items.audio.Audio(file_path: str = '', begin: float = -1, end: float = -1, **kwargs)

基类:object

音频

可以配置 audio_channels 选项控制读取的声道数(默认为2)

另见:Config

audio_cache_map: dict[tuple, tuple[ndarray, int, str, str]] = {}
copy() Self
set_samples(data: Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str]) None
read(file_path: str, begin: float = -1, end: float = -1) Self

从文件中读取音频

可以指定 beginend 来截取音频的一部分

sample_count() int

所有采样点的数量

duration() float

持续时间

clip(begin: float = 0, end: float = -1) Self

裁剪音频

  • 保留 beginend 之间的部分

  • begin 缺省,则表示从最开始

  • end 缺省(-1),则表示到最末尾

mul(value: float | Iterable[float]) Self

乘以给定的 valuevalue 可以含有多个元素(比如一个列表)

例如:

  • audio.mul(0.5) 可以使音高减半

  • audio.mul([1, 0]) 可以使开始时最强,结束时最弱

  • audio.mul(np.sin(np.linspace(0, 2 * np.pi, audio.sample_count()))) 可以使音高随时间乘以 sin 函数的一个周期

fade_in(duration: float) Self

应用 duration 秒的淡入

fade_out(duration: float) Self

应用 duration 秒的淡出

recommended_ranges(*, amplitude_threshold_ratio: float = 0.02, gap_duration: float = 0.15) Generator[tuple[float, float], None, None]

得到若干个可用区段 (start, end),一般用于配音音频,也就是会忽略没声音的部分,得到有声音的区段的起止时间

recommended_range() 的区别是,该方法得到的是若干个区段, 举个例子,如果在讲了一句话后停了一会,再接着讲,那么前后就会被分成两段

  • amplitude_threshould_ratio: 振幅低于该比率的就认为是没声音的

  • gap_duration: 如果没声音的时长大于该时间,则将前后分段

recommended_range(*, amplitude_threshold_ratio: float = 0.02) tuple[float, float] | None

得到可用区段 (start, end),一般用于配音音频,也就是会忽略没声音的部分,得到有声音的区段的起止时间

recommended_ranges() 的区别是,该方法得到的是最开始到最末尾的整个区段

  • amplitude_threshould_ratio: 振幅低于该比率的就认为是没声音的