OpenAI Realtime API umożliwia interakcje niskolatencyjne z obsługą wielu modalności, w tym konwersacje mowy na mowę oraz transkrypcję w czasie rzeczywistym.
Komponent TsgcWSAPI_OpenAI implementuje RealTime OpenAI API.
Należy użyć właściwości method, aby wybrać tryb Conversation lub Transcription; obecnie obsługiwany jest wyłącznie tryb Transcription.
Właściwość InputAudio umożliwia dostosowanie następujących danych:
OpenAI
OpenAI API używa kluczy API do uwierzytelniania. Należy odwiedzić stronę Klucze API, aby pobrać klucz API używany w żądaniach.
Klucz API jest informacją poufną — nie należy udostępniać go innym ani umieszczać w kodzie po stronie klienta (przeglądarki, aplikacje). Żądania produkcyjne muszą być kierowane przez własny serwer backendowy, gdzie klucz API może być bezpiecznie ładowany ze zmiennej środowiskowej lub usługi zarządzania kluczami.
Ten klucz API musi być skonfigurowany we właściwości OpenAIOptions.ApiKey komponentu. Opcjonalnie, dla użytkowników należących do wielu organizacji, można ustawić organizację we właściwości OpenAIOptions.Organization, jeśli konto należy do organizacji.
Po skonfigurowaniu klucza API poniżej znajduje się lista dostępnych funkcji do interakcji z OpenAI API.
Azure
Klient obsługuje Microsoft Azure OpenAI Services, dzięki czemu można używać konta Azure do interakcji z Azure OpenAI API. Aby skonfigurować klienta do pracy z Azure, należy wykonać następujące kroki:
Poniżej znajduje się przykład transkrypcji w czasie rzeczywistym z użyciem OpenAI API
WSClient := TsgcWebSocketClient.Create(nil);
oAudio := TsgcAudioRecorderWave.Create(nil);
OpenAI := TsgcWSAPI_OpenAI.Create(nil);
OpenAI.Client := WSClient;
OpenAI.AudioRecorder := oAudio;
OpenAI.OpenAIOptions.APIKey := 'your-api-key-here';
OpenAI.OpenAIOptions.method := sgcoaimTranscription;
OpenAI.OpenAIOptions.provider := sgcoaipOpenAI;
OpenAI.InputAudio.Language := 'en';
OpenAI.InputAudio.Model := 'whisper-1';
procedure OnOpenAIAudioTranscriptionCompleted(Sender: TObject; const aItem: TsgcWSOpenAIConversation_Item_Completed);
begin
Log('#transcription_completed: ' + aItem.Transcript);
end;