Ho importato la libreria di tipi SAPI in Delphi. Mi può produrre discorso agli altoparlanti del PC con questo codice:text-to-speech-to-wav in Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
Voice: TSpVoice;
begin
Voice := TSpVoice.Create(nil);
Voice.Speak('Hello World!', 0);
end;
posso output vocale in un file .wav
con questo codice:
procedure TForm1.Button1Click(Sender: TObject);
var
Voice: TSpVoice;
Stream: TSpFileStream;
begin
Voice := TSpVoice.Create(nil);
Stream := TSpFileStream.Create(nil);
Stream.Open('c:\temp\test.wav', SSFMCreateForWrite, False);
Voice.AudioOutputStream := Stream.DefaultInterface;
Voice.Speak('Hello World!', 0);
Stream.Close;
end;
Il problema è che quando ho riprodurre il file .wav
esso sembra terribile, come se stesse usando un bitrate molto basso. Audacity mi dice che il file è mono 16 bit 22.05 kHz, ma suona molto peggio di così.
Come si trasmette il parlato a un file mono a 16 bit 44.1kHz .wav
che suona esattamente come l'uscita vocale direttamente agli altoparlanti del PC? Non riuscivo a capire come modificare il secondo codice di esempio per impostare i bit per campione e il bitrate.
Follup-up: La risposta di Glenn risolve il problema del bitrate. Grazie per quello. Ma la qualità dell'output vocale per il file .wav
è ancora inferiore a ciò che viene emesso direttamente agli altoparlanti. Ho usato un software di registrazione dello schermo per registrare l'output dal primo blocco di codice come helloworldtospeakers.wav. Il secondo blocco di codice, con aggiunta della linea di Glenn, produce helloworldtowav.wav. Il secondo file ha chiaramente qualche distorsione. Qualche idea?