update g1 audio api and g1_audio_client_example

This commit is contained in:
xiaoliangstd 2025-01-14 12:22:41 +08:00
parent 0f170964af
commit f17114c8f5
3 changed files with 130 additions and 0 deletions

View File

@ -0,0 +1,44 @@
import time
import sys
from unitree_sdk2py.core.channel import ChannelSubscriber, ChannelFactoryInitialize
from unitree_sdk2py.g1.audio.g1_audio_client import AudioClient
from unitree_sdk2py.g1.loco.g1_loco_client import LocoClient
if __name__ == "__main__":
if len(sys.argv) < 2:
print(f"Usage: python3 {sys.argv[0]} networkInterface")
sys.exit(-1)
ChannelFactoryInitialize(0, sys.argv[1])
audio_client = AudioClient()
audio_client.SetTimeout(10.0)
audio_client.Init()
sport_client = LocoClient()
sport_client.SetTimeout(10.0)
sport_client.Init()
ret = audio_client.GetVolume()
print("debug GetVolume: ",ret)
audio_client.SetVolume(85)
ret = audio_client.GetVolume()
print("debug GetVolume: ",ret)
sport_client.WaveHand()
audio_client.TtsMaker("大家好!我是宇树科技人形机器人。语音开发测试例程运行成功! 很高兴认识你!",0)
time.sleep(8)
audio_client.TtsMaker("接下来测试灯带开发例程!",0)
time.sleep(1)
audio_client.LedControl(255,0,0)
time.sleep(1)
audio_client.LedControl(0,255,0)
time.sleep(1)
audio_client.LedControl(0,0,255)
time.sleep(3)
audio_client.TtsMaker("测试完毕,谢谢大家!",0)

View File

@ -0,0 +1,24 @@
"""
" service name
"""
AUDIO_SERVICE_NAME = "voice"
"""
" service api version
"""
AUDIO_API_VERSION = "1.0.0.0"
"""
" api id
"""
ROBOT_API_ID_AUDIO_TTS = 1001
ROBOT_API_ID_AUDIO_ASR = 1002
ROBOT_API_ID_AUDIO_START_PLAY = 1003
ROBOT_API_ID_AUDIO_STOP_PLAY = 1004
ROBOT_API_ID_AUDIO_GET_VOLUME = 1005
ROBOT_API_ID_AUDIO_SET_VOLUME = 1006
ROBOT_API_ID_AUDIO_SET_RGB_LED = 1010
"""
" error code
"""

View File

@ -0,0 +1,62 @@
import json
from ...rpc.client import Client
from .g1_audio_api import *
"""
" class SportClient
"""
class AudioClient(Client):
def __init__(self):
super().__init__(AUDIO_SERVICE_NAME, False)
self.tts_index = 0
def Init(self):
# set api version
self._SetApiVerson(AUDIO_API_VERSION)
# regist api
self._RegistApi(ROBOT_API_ID_AUDIO_TTS, 0)
self._RegistApi(ROBOT_API_ID_AUDIO_ASR, 0)
self._RegistApi(ROBOT_API_ID_AUDIO_START_PLAY, 0)
self._RegistApi(ROBOT_API_ID_AUDIO_STOP_PLAY, 0)
self._RegistApi(ROBOT_API_ID_AUDIO_GET_VOLUME, 0)
self._RegistApi(ROBOT_API_ID_AUDIO_SET_VOLUME, 0)
self._RegistApi(ROBOT_API_ID_AUDIO_SET_RGB_LED, 0)
## API Call ##
def TtsMaker(self, text: str, speaker_id: int):
self.tts_index += self.tts_index
p = {}
p["index"] = self.tts_index
p["text"] = text
p["speaker_id"] = speaker_id
parameter = json.dumps(p)
code, data = self._Call(ROBOT_API_ID_AUDIO_TTS, parameter)
return code
def GetVolume(self):
p = {}
parameter = json.dumps(p)
code, data = self._Call(ROBOT_API_ID_AUDIO_GET_VOLUME, parameter)
if code == 0:
return code, json.loads(data)
else:
return code, None
def SetVolume(self, volume: int):
p = {}
p["volume"] = volume
# p["name"] = 'volume'
parameter = json.dumps(p)
code, data = self._Call(ROBOT_API_ID_AUDIO_SET_VOLUME, parameter)
return code
def LedControl(self, R: int, G: int, B: int):
p = {}
p["R"] = R
p["G"] = G
p["B"] = B
parameter = json.dumps(p)
code, data = self._Call(ROBOT_API_ID_AUDIO_SET_RGB_LED, parameter)
return code