Well, the only thing you're doing wrong is using something buried in the documentation that apparently no one else uses

There's definitely a bug (2 actually), but before I go into that --
Are you sure this is what you think it is? You mention "custom voice announcement" but that's not what this is. This syntax is for the *reader*, not the *notifier*. The "reader" is used to read the current message (e.g. when you open it). The notifier has a much more restricted syntax and does not include a date value (the reason being -- it's a new message, the assumption is that the message is relatively recent).
BUG(s):
The first bug is that -- somewhere along the line -- the syntax was forced to lower-case, so %B gets changed to %b and %H:%M to %h:%m.
The second bug is that if you use an unsupported %-value in %DATE<>%, PP crashes.
Result: %H gets converted to %h; %h isn't a valid value so PP crashes.
Also, if you use something like %DATE<%B>%, it will work, but it says "apr" instead of "April" because %b = abbreviated month name.
So, in the current build (voice notifier v5.4.5), the only way to get a time value is with:
%DATE<%c>%
%DATE<%#c>%
The latter syntax includes the weekday but, unfortunately, either one will use 24-hour time.
I hadn't planned on a Plus Pack release for v5.4.6, and probably still won't. If you want the update to fix these 2 issues, let me know via email and I'll make it available (support at esumsoft dot com); keeping in mind that this syntax only applies to the "reader" and not the "notifier".