Floor Map icon Floor Map Draws a live floor map of robot movement using Movement Panel, logging direction, distance and heading; configurable speed and turn settings. Try it →
Asked

JD Audio Stutters While Walking

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)
JD Humanoid by EZ-Robot
JD humanoid robot kit - WiFi-enabled, 16 DOF with metal-gear servos; easy, fun, educational, available from the EZ-Robot online store.
Wi-Fi / USB
Servos 24
Camera
Audio
UART 3
I2C
ADC 8
Digital 24

Related Robot Skills (view all robot skills)
Create servo frames/actions to animate humanoid, hexapod or custom gaits with smooth transitions, SW ramping and directional control
Key Control by Synthiam
Assign scripts to any keyboard key (press/release), map arrow keys to movement controls; activates when the control has focus (green).

ARC Pro

Upgrade to ARC Pro

Get access to the latest features and updates before they're released. You'll have everything that's needed to unleash your robot's potential!

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

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

  • Say (EZ-B) and Soundboard (EZB) both depend on real-time streaming to the EZ-B.
  • Auto Position also generates a lot of traffic while the robot is moving.
  • The fact that Say (PC Speaker) is smooth confirms the issue is EZ-B audio streaming, not TTS itself.
  • There isn’t really a "lower the EZ-B sample rate" setting in ARC that fixes this directly.

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.
  • If the phrase must come from the robot physically, then you’ll need to accept some tradeoff on WiFi or use a wired connection if your setup supports it.

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:

  • movement commands are only sent when the stick changes meaningfully
  • button press scripts don’t repeatedly re-trigger while held
  • any scripts have small sleep() delays if they loop

3) Avoid stacking multiple real-time EZ-B audio features while walking

If you’re walking, try to avoid:

  • Say (EZ-B)
  • Soundboard (EZB)
  • long audio clips streamed to the EZ-B

Instead, use:

  • PC Speaker
  • or local PC audio files with 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.

For the behavior you want:

  • Movement: Auto Position Movement Panel
  • Joystick control: Joystick (Direct Input)
  • Speech while walking: Say (PC Speaker) or local PC audio
  • EZ-B audio: use only when the robot is stopped, or accept occasional stutter

Example approach

Instead of:

sayEZB("Let's go!");

use:

Audio.say("Let's go!");

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:

  • left stick controls motion
  • A/B buttons speak once per press
  • and speech uses PC audio while walking, but can optionally switch to EZ-B audio when stopped

Questions that would help narrow it down:

  1. Are you using continuous stick polling scripts, or the built-in joystick mappings only?
  2. Do you want the voice to come from the robot speaker specifically, or is PC speaker acceptable while walking?
  3. Which JD movement skill are you using exactly - the Auto Position Movement Panel gait skill from the store?

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.