Arduino and wave generation
If 5kHz is the highest frequency you need, then according to Nyquist (some say Shannon) you need at least a 10kHz sample frequency. That's a sample periode of 100\$\mu\$s, which should be doable for any modern microcontroller. You'll have to make lookup tables for your waveforms. Everything depends on the frequencies you want (for example, only 1kHz and multiples?), and the waveform (square wave, sine?). Keep in mind that for the Nyquist sampling frequency you also have to take harmonics into account. So you can reconstruct a 5kHz sine when sampled at 10kHz, because it doesn't have any higher harmonics, but a 5kHz square wave needs quite a few harmonics to get a decent approximation of the wave form, so that 10kHz will be insufficient.
You'll also want an analog low-pass filter on the output signal, to filter out the sampling.