The question of best approach depends on what exactly your trying to do. You only specified that you want to whisper music/message to a single participent. Removing them from the conference for that will only be MORE complicated. As far as how to, here is approximate code:
Dialplan:
[whisper-to-participant]
exten => s,1,Answer()
exten => s,n,ChanSpy(,w)
Then originate a call (in this example were using a call file, although AMI would work just fine) as:
Channel: Local/s@whisper-to-participant
Application: Playback
Data:
While my syntax may not be perfect here, this is the basic idea of how to stream/whisper data to a single participant.