Ich importierte die SAPI-Typ-Bibliothek in Delphi. Ich kann Ausgang Rede an die PC-Lautsprecher mit diesem Code:Text-zu-Sprache-zu-wav in Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
Voice: TSpVoice;
begin
Voice := TSpVoice.Create(nil);
Voice.Speak('Hello World!', 0);
end;
ich ausgeben kann Sprache an eine .wav
Datei mit diesem Code:
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;
Das Problem ist, dass, wenn ich die .wav
Datei abspielen es klingt schrecklich, wie es eine wirklich niedrige Bitrate verwendet. Audacity sagt mir, dass die Datei Mono 16-Bit 22,05 kHz ist, aber es klingt viel schlechter als das.
Wie gebe ich Sprache in eine Mono-16-Bit 44.1kHz .wav
Datei aus, die genauso klingt wie die Sprachausgabe direkt an die PC-Lautsprecher? Ich konnte nicht herausfinden, wie man das zweite Codebeispiel ändert, um die Bits pro Sample und die Bitrate einzustellen.
Follup-up: Glenn's Antwort löst das Problem mit der Bitrate. Dank dafür. Aber die Qualität der Sprachausgabe an die .wav
Datei ist immer noch schlechter als die, die direkt an die Lautsprecher ausgegeben wird. Ich verwendete eine Bildschirmaufzeichnungssoftware, um die Ausgabe des ersten Codeblocks als helloworldtospeakers.wav aufzuzeichnen. Der zweite Codeblock mit der hinzugefügten Zeile von Glenn erzeugt helloworldtowav.wav. Die zweite Datei weist eindeutig eine Verzerrung auf. Irgendwelche Ideen?