#!c:\perl\bin\perl.exe use strict; use warnings; use Win32::SAPI5; use CGI; $| = 1; my $audiofile = 'test.wav'; my $q = new CGI(); my $text = $q->param('text') || qq(ein text, der zu lang ist, um ganz abgespielt zu werden); # setup Microsoft Speech API my $stream = Win32::SAPI5::SpFileStream->new(); $stream->Open($audiofile, 3, 0); # 3 = SSFMCreateForWrite my $voice = Win32::SAPI5::SpVoice->new(); $voice->SetProperty(AudioOutputStream => $stream->GetObject); $voice->Speak($text); $stream->Close(); my $size = (stat($audiofile))[7]; print $q->header(-type => "audio/x-wav", -Content_length => $size); open my $fh, '<', $audiofile or die $!; binmode $fh; binmode STDOUT; while (<$fh>) { print } close($fh);