音频
音频内部使用PyAV库处理数据。支持的音频格式:mp3、aiff、flac、wav、wma、m4a、aac。音频对象的属性和方法如下所示:
| 属性名 | 类型 | 说明 |
|---|---|---|
| filename | str | 音频文件的路径或文件名(如果从文件加载)。 |
| format | str | 音频格式(如wav、mp3)。 |
| subtype | str | 音频编码。 |
| data | bytes | 音频数据。 |
| 方法名 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| __init__ | filename: Union[str, os.PathLike] = None data: Union[str, bytes, sf.SoundFile] = None | None | 构造方法:从文件(filename)或数据(data)加载音频,支持二进制数据或soundfile对象。 |
| truncate | start_time: float = 0 end_time: Optional[float] = None | Audio | 截取音频片段(时间单位为秒),返回新Audio对象。 |
| convert_format | format: str subtype: Optional[str] = None | Audio | 转换音频格式(如wav转mp3),返回新Audio对象。 |
| write | filename: str | None | 将音频写入指定文件(自动推断格式)。 |
| split | interval: int | list[Audio] | 按指定interval秒数分割audio为片段列表。 |
音频读写
该示例演示如何从obs路径下"obs://xxxxx/xxxxx"读取音频,并且加载到dataset中,然后从中随机选取3条音频再写回到指定的obs路径下。
import os
from aura_frame.multimodal import ai_lake
target_database = "test"
conn = ai_lake.connect(
aura_endpoint=os.getenv("AURA_ENDPOINT"),
aura_endpoint_name=os.getenv("AURA_ENDPOINT_NAME"),
aura_workspace_id=os.getenv("AURA_WORKSPACE"),
lf_catalog_name=os.getenv("AURA_CATALOG"),
access_key=os.getenv("access_key"),
secret_key=os.getenv("secret_key"),
default_database=target_database,
use_single_cn_mode=True
)
ds = conn.read_audios("obs://xxxxx/xxxxx", start=0, end=-1, sample_rate=16000, file_extensions=["wav", "flac"], include_paths=True)
ds.show(3)
ds_to_write = ds.select_columns([ds.audio]).limit(3)
ds_to_write.write_audios("obs://xxxxx/xxxxx", "audio", file_format="wav", start=0, end=-1, sample_rate=16000, filename_prefix="audio_", try_create_dir=True)
conn.close()