assuming you've got VC set up correctly to work with Frodo in general you should be able to just drop this into your tree and it will announce songs.
<?xml version="1.0" encoding="utf-16"?>
<commandGroup open="True" name="XJSON announce songs" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="883" name="XJson.Connect" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>XJson.Connect</cmdType>
<cmdString />
<cmdRepeat>1</cmdRepeat>
</action>
<event>focused.XBMC</event>
</command>
<command id="507" name="OnPlay Song" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>TTS.Stop</cmdType>
<cmdString>{LastResult}</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>XJson.Raw</cmdType>
<cmdString>Player.GetItem&&"playerid":0, "properties": ["title", "album", "artist", "rating","playcount","genre"]</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>XJson.ParseTokens</cmdType>
<cmdString>Now Playing : {item.title}, by Artist {item.artist[[ & ]]}</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<cmdString>{LastResult}</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<event>XBMC.Player.OnPlay.song</event>
</command>
</commandGroup>