MinjunRobots
Running JD Humanoid over WiFi with ARC on Windows. I’m driving it with a Logitech F310 (in DirectInput/Dmode) using the Joystick (Direct Input) skill, and I added Speech Synthesis so JD can talk on button presses. Movement is via the default JD Auto Position gait (Auto Position Movement Panel in the project). The goal is: left stick = forward/back/turn, and buttons trigger phrases (e.g., A = "Let’s go!", B = "Stopping").
What I’m seeing: whenever JD is walking, any Say (EZ-B v4 Speaker) output is choppy-words get clipped or there are short gaps. If JD is standing still, the voice is clear. If I use Say (PC Speaker), it’s smooth, so it seems specific to audio streaming to the EZ-B while the servos are busy.
What I tried so far:
- Increased Auto Position step time (from fast frames to slower, e.g., 20 ms up to ~60-80 ms) and reduced servo speeds; still get stutter when moving.
- Tested both EZ-B AP mode and Client mode (on my 2.4 GHz router), moved the PC closer, and verified RSSI is good; ping to EZ-B is ~12-18 ms.
- Battery is fully charged; no brownouts or resets.
- Tried Soundboard (EZB) with a short WAV during walking-also stutters, so it’s not just TTS.
- Kept scripts minimal in Joystick (Direct Input) button press, e.g.:
sayEZB("Let’s go!");
Is there a recommended way in ARC to make JD walk and speak at the same time without choppy audio-such as throttling servo command frequency from Auto Position or Joystick (Direct Input), lowering the Speech Synthesis audio sample rate to the EZ-B, or some other best practice to balance movement updates and EZ-B audio streaming?
Related Hardware (view all EZB hardware)
Related Robot Skills (view all robot skills)

Yes - what you’re describing is almost always WiFi audio streaming contention, not a JD-specific gait issue.
When JD is walking, Auto Position is sending frequent servo updates, and at the same time Say (EZ-B v4 Speaker) / Soundboard audio is streaming continuously to the EZ-B. On WiFi, those two streams can compete for bandwidth and timing, which causes the stutter / clipping / short gaps you’re hearing.
What to know
Best practices that usually help
1) Use PC Speaker for speech when the robot is moving
This is the most reliable fix if the robot needs to walk and talk at the same time.
Say (PC Speaker)is rendered locally on the computer, so it does not fight with EZ-B WiFi audio.2) Reduce how often you send movement commands
If the joystick scripts are firing constantly or repeatedly triggering movement commands, that can add unnecessary traffic.
For the Joystick (Direct Input) skill, check the configuration via the kebab menu (three lines) on the skill window and make sure:
sleep()delays if they loop3) Avoid stacking multiple real-time EZ-B audio features while walking
If you’re walking, try to avoid:
Say (EZ-B)Soundboard (EZB)Instead, use:
Audio.playAudioFile()4) Keep Auto Position transitions efficient
You already slowed the gait, which is good. Also check whether the gait is using more frames than necessary. Fewer, cleaner frames often means less chatter on the connection.
5) Prefer a wired connection for production reliability
If the robot ever supports a wired connection path, that will be the most stable way to do audio + movement simultaneously.
Recommended setup for your case
For the behavior you want:
Say (PC Speaker)or local PC audioExample approach
Instead of:
use:
That will keep the speech on the PC audio path, which is much smoother during walking.
One more thing to check
If your button scripts are launching speech on every loop/press, you may be accidentally calling speech more often than intended. If you want, I can help you structure the joystick scripts so:
Questions that would help narrow it down:
If you want, I can help you set up a clean joystick-to-movement-and-speech script in JavaScript. The ARC AI Assistant can also rewrite this kind of script right inside ARC if you want to try it:
https://synthiam.com/Products/AI-Assistant
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.