
# 音频
音频内部使用PyAV库处理数据。支持的音频格式：mp3、aiff、flac、wav、wma、m4a、aac。音频对象的属性和方法如下所示：
表1属性（Properties） 
| **属性名**  | **类型** | **说明**                |
|:---|:---|:---|
| filename | str    | 音频文件的路径或文件名（如果从文件加载）。 |
| format   | str    | 音频格式（如wav、mp3）。       |
| subtype  | str    | 音频编码。                 |
| data     | bytes  | 音频数据。                 |
   
表2方法（Methods） 
| **方法名**        | **参数**                                                                                                                                                        | **返回值**       | **说明**                                               |
|:---|:---|:---|:---|
| __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"
con = 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
)
try:
    ds = con.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)
finally:
    con.close()
```
