Я импортировал библиотеку типов 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,1 кГц .wav
, который будет звучать точно так же, как речевой вывод, непосредственно на динамики ПК? Я не мог понять, как изменить второй образец кода, чтобы установить количество бит на образец и битрейт.
Подсказка: ответ Гленна решает проблему с битрейтом. Спасибо за это. Но качество вывода речи в файл .wav
все равно хуже, чем то, что выводится непосредственно на динамики. Я использовал программное обеспечение для записи экрана, чтобы записать вывод первого блока кода как helloworldtospeakers.wav . Второй блок кода с добавленной строкой Гленна создает helloworldtowav.wav. Второй файл явно искажен. Любые идеи?