## Edit Pet Cloud-Stored Audio Files

### Feature Introduction

<div style="margin-top: 20px;">
<img alt="Original Video" src="https://images.tuyacn.com/rms-static/082234a0-41b9-11f0-9f57-5d628208d2a7-1749092340970.jpg?tyName=delete" width="300" style="border: 1px solid #000000">
</div>

1. The following actions can be performed on pet cloud-stored audio files: retrieve all cloud-stored audio, preview cloud-stored audio, add new cloud-stored audio, download cloud-stored audio to devices, and delete cloud-stored audio.

2. Editing pet cloud-stored audio files mainly relies on the following 4 key capabilities:

- **Retrieve Pet Media Files**  
   Developers can use the [fetchPetAudios](/en/miniapp/develop/ray/api/ai/aiPet/pet_media-device/fetchPetAudios) API to retrieve pet media files.

- **Download Pet Media Files**  
   Developers can use the [notifyDownload](/en/miniapp/develop/ray/api/ai/aiPet/pet_media-device/notifyDownload) API to download pet media files to devices.

- **Delete Pet Media Files**  
   Developers can use the [deleteDeviceFile](/en/miniapp/develop/ray/api/ai/aiPet/pet_media-device/deleteDeviceFile) API to delete pet media files.

- **Music Resource Control Instance**  
   Developers can use the [createInnerAudioContext](https://developer.tuya.com/cn/miniapp/develop/ray/api/media/audio/createInnerAudioContext) API to preview cloud-stored audio files.

### Interaction Flow

```mermaid
sequenceDiagram
    participant User
    participant Panel
    participant Cloud
    participant Audio Player

    rect rgb(200, 230, 255)
        Note over User, Cloud: Retrieve Audio List
        User ->> Panel: 1. Request Pet Audio
        Panel ->> Cloud: 2. fetchPetAudios()
        alt Audio Files Available
            Cloud -->> Panel: 3. Return audio list []
            Panel ->> User: 4. Display operable list
        else No Audio Files
            Cloud -->> Panel: 3. Return empty list
            Panel ->> User: 4. Show "No Audio Available" prompt
        end
    end

    rect rgb(230, 255, 200)
        Note over User, Cloud: Add Audio (for empty list)
        User ->> Panel: 5. Upload local audio
        Panel ->> Cloud: 6. fileRelationSave()
        Cloud -->> Panel: 7. Return new audio ID
        Panel ->> User: 8. Update and display list
    end

    rect rgb(255, 230, 200)
        Note over User, Audio Player: Audio Preview Management
        User ->> Panel: 9. Select file for preview
        Panel ->> Audio Player: 10. createInnerAudioContext(ID)
        Audio Player ->> Cloud: 11. Obtain audio stream
        Cloud -->> Audio Player: 12. Return audio stream
        Audio Player ->> User: 13. Start playback

        alt Preview satisfactory
            User ->> Panel: 14. Confirm download
            Panel ->> Cloud: 15. notifyDownload(ID)
            Cloud -->> Panel: 16. Return download link
            Panel ->> User: 17. Save to device
        else Preview unsatisfactory
            User ->> Panel: 14. Delete file
            Panel ->> Cloud: 15. deleteDeviceFile(ID)
            Cloud -->> Panel: 16. Return deletion result
            Panel ->> User: 17. Update list
        end
    end
```
