Eliminating buzz or high pitch noise from PWM LED Driver?
You are dealing with a common problem with microcontroller-generated PWM signals: An 8-bit PWM driven at the usual clock rate can skirt the edge of audio range. Let's say the chip has an 8MHz clock. An 8-bit PWM maximum frequency is 31.25 kHz. You won't hear that, but your dog might. Add in charlieplexing: now your 30 kHz PWM is being time-shared among several LEDs, effectively lowering (into the audio range) the signal to individual LEDs.

There is no easy way around this without completely changing how you approach this problem. Charlieplexing + PWM dimming will scream when implemented on a small microcontroller.