syntax = "proto3"; import "cmvr/api/common.proto"; package cmvr.api; // 音频数据格式(与麦克风类似,但用于输出) message AudioData { enum AudioFormat { PCM = 0; MP3 = 1; AAC = 2; WAV = 3; } bytes data = 1; // 音频二进制数据 int32 sample_rate = 2; // 采样率(Hz) int32 channels = 3; // 声道数 AudioFormat format = 4; // 音频格式 string codec = 5; // 编码方式 } // 扬声器状态 message SpeakerState { bool is_initialized = 1; // 是否已初始化 bool is_running = 2; // 是否正在播放 bool is_decoding = 3; bool is_paused = 5; int32 volume = 6; // 当前音量(0 ~ 100) string error_message = 7; // 错误信息 } // 各种扬声器命令 message GetSpeakerStateCommand { message Request { CommandHeader.Request header = 1; } message Feedback { CommandHeader.Feedback header = 1; SpeakerState state = 2; } } message PlayAudioCommand { message Request { CommandHeader.Request header = 1; string audio_path = 2; } message Feedback { CommandHeader.Feedback header = 1; } } message StopSpeakerCommand { message Request { CommandHeader.Request header = 1; } message Feedback { CommandHeader.Feedback header = 1; } } message PauseSpeakerCommand { message Request { CommandHeader.Request header = 1; } message Feedback { CommandHeader.Feedback header = 1; } } message ResumeSpeakerCommand { message Request { CommandHeader.Request header = 1; } message Feedback { CommandHeader.Feedback header = 1; } } message SetSpeakerVolumeCommand { message Request { CommandHeader.Request header = 1; int32 volume = 2; // 音量值(0 ~ 100) } message Feedback { CommandHeader.Feedback header = 1; } } message GetSpeakerVolumeCommand { message Request { CommandHeader.Request header = 1; } message Feedback { CommandHeader.Feedback header = 1; int32 volume = 2; // 当前音量值 } }