Recording with monitor, but can't play back

I am monitoring phone calls and recording them using the following exten commands:

exten =>1,n,Monitor(gsm,test,m)
exten =>1,n,Dial(SIP/303,15,rt)

When a call comes through on SIP/303, I get a recording in /var/spool/asterisk/monitor called test.gsm

However, when I try to play it back

exten => 299,1,Answer()

exten => 299,n,ControlPlayback(test,4000,#,*,1,0)
exten => 299,n,Hangup

I get ringing sounds and then a voicemail prompt.

If I just record some numbers

;exten => 299,n,Monitor(gsm,test,m)
;exten => 299,n,SayDigits(12345670)
;exten => 299,n,StopMonitor()

Then I can play back the gsm file fine.

Is there something about the gsm codec that can’t be used to record a call in ulaw mode. Do I need to record in ulaw to be able to play it back? Any other suggestions?