Я импортировал библиотеку типов SAPI в Delphi. Я могу вывести речь на динамики ПК с помощью этого кода:
procedure TForm1.Button1Click(Sender: TObject);
var
Voice: TSpVoice;
begin
Voice := TSpVoice.Create(nil);
Voice.Speak('Hello World!', 0);
end;
Я могу вывести речь в файл .wav
с помощью этого кода:
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;
Проблема в том, что когда я воспроизвожу файл .wav
, он звучит ужасно, как и при использовании очень низкого битрейта. Audacity говорит мне, что файл имеет 16-бит 22,05 кГц, но это звучит намного хуже.
Как вывести речь в моно-16-разрядный 44.1kHz .wav
файл, который будет звучать точно так же, как речевой вывод непосредственно на динамики ПК? Я не мог понять, как изменить второй образец кода, чтобы установить бит на образец и битрейт.
Follup-up: Ответ Гленна решает проблему с битрейтом. Спасибо за это. Но качество вывода речи в файл .wav
по-прежнему уступает тому, что выводится непосредственно на динамики. Я использовал программное обеспечение для записи экрана для записи вывода из первого блока кода как helloworldtospeakers.wav. Второй блок кода с добавленной строкой Гленна производит helloworldtowav.wav. Второй файл явно имеет некоторые искажения. Любые идеи?