Zaimportowałem bibliotekę typu SAPI do Delphi. Mogę mowy wyjście do głośników komputerowych z tym kodem:text-to-speech-to-wav w Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
Voice: TSpVoice;
begin
Voice := TSpVoice.Create(nil);
Voice.Speak('Hello World!', 0);
end;
mogę mowy wyjście do pliku .wav
z tym kodem:
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;
Problem polega na tym, że kiedy odtworzyć pliku, który .wav
brzmi okropnie, jakby używało naprawdę niskiej przepływności. Audacity mówi mi, że plik ma format 16 bitów 22.05 kHz, ale brzmi znacznie gorzej.
Jak wyprowadzić mowę na plik 16-bitowego 44,1 kHz o częstotliwości próbkowania 44.1 kHz, z dokładnością co do mowy, bezpośrednio na głośniki komputera? Nie mogłem wymyślić, jak zmodyfikować drugą próbkę kodu, aby ustawić bity na próbkę i bitrate.
Folkup-up: Odpowiedź Glenna rozwiązuje problem z przepływnością. Dziękuję za to. Ale jakość mowy wyjściowej do pliku .wav
jest wciąż gorsza od tego, co jest wysyłane bezpośrednio do głośników. Użyłem oprogramowania do nagrywania ekranu, aby zarejestrować wyjście z pierwszego bloku kodu jako helloworldtospeakers.wav. Drugi blok kodu, z dodaną linią Glenna, generuje helloworldtowav.wav. Drugi plik wyraźnie ma pewne zniekształcenia. Jakieś pomysły?