1. Przegląd modeli mowy

1.1. Wprowadzenie do modeli TTS i STT OpenAI

Model Text-to-Speech (TTS)

Model TTS OpenAI może przekształcać dane tekstowe na mowę. Proces ten obejmuje analizę tekstu, zastosowanie algorytmów syntezy mowy oraz dostosowanie jakości dźwięku. Umożliwia to komputerowi odczytywanie dowolnego tekstu pisanego, co sprawia, że treść staje się bardziej zrozumiała i dostępna. TTS jest istotną technologią dla osób niewidomych, kierowców oraz wszystkich, którzy woleliby otrzymywać informacje poprzez słuchanie.

Model Speech-to-Text (STT)

W odpowiedzi na TTS, model STT może przekształcać informacje mówione na tekst pismem. Przetwarzając oryginalne dane audio, system STT najpierw dokonuje detekcji mowy, a następnie ekstrakcji cech. Następnie mapuje sygnał audio na słownictwo za pomocą modeli akustycznych i językowych, generując ostatecznie wynik tekstowy. Technologia STT jest powszechnie wykorzystywana w rozpoznawaniu mowy, transkrypcji spotkań oraz generacji napisów w czasie rzeczywistym.

1.2. Scenariusze zastosowań

  • Odczytywanie blogów na głos
  • Generowanie mowy wielojęzycznej

3. Interfejs API Text-to-Speech

3.1. Szybki start

W tej sekcji pokażemy, jak szybko przekształcić tekst na mowę za pomocą polecenia curl oraz klienta w języku Python. Bez względu na to, czy jesteś programistą, czy użytkownikiem niezorientowanym w technologii, możesz łatwo generować pliki dźwiękowe, wysyłając po prostu zapytanie API.

Wysyłanie zapytań za pomocą narzędzia Curl

Aby wygenerować mowę za pomocą narzędzia wiersza poleceń curl, postępuj zgodnie z poniższymi krokami:

  1. Upewnij się, że narzędzie curl jest zainstalowane na Twoim systemie oraz masz ważny klucz API OpenAI.
  2. Wykorzystaj poniższe polecenie curl, aby przekształcić tekst na mowę:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Dzisiaj to wspaniały dzień, aby budować produkty, które ludzie pokochają!",
    "voice": "alloy"
  }' \
  --output mowa.mp3

W powyższym poleceniu, $OPENAI_API_KEY oznacza Twój klucz API, pole input to tekst, który chcesz przekształcić, pole model określa model głosu do użycia, a parametr voice wybiera głos. Tutaj wybieramy syntetyczny metaliczny głos alloy. Końcowa opcja --output określa nazwę i format pliku wyjściowego.

Wykorzystanie klienta w języku Python

Jeśli wolisz używać języka programowania Python, możesz skorzystać z poniższego przykładu kodu:

from openai import OpenAI

klient = OpenAI()

odpowiedź = klient.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="Dzisiaj to wspaniały dzień, aby budować produkty, które ludzie pokochają!"
)

odpowiedź.stream_to_file("output.mp3")

W tym fragmencie kodu najpierw importujemy bibliotekę openai i tworzymy instancję klienta OpenAI. Następnie korzystamy z metody audio.speech.create, aby wysłać żądanie, określając model, głos i tekst do przekształcenia. W końcu używamy metody stream_to_file, aby zapisać wygenerowany strumień mowy do pliku.

3.2. Wybór jakości dźwięku i głosu

Wybór odpowiedniej jakości dźwięku i głosu dla Twojego projektu to istotny krok w zapewnieniu najlepszego doświadczenia użytkownika. Nasze API oferuje dwie opcje modeli jakości dźwięku: tts-1 i tts-1-hd.

  • tts-1: Zapewnia niższe opóźnienie, odpowiednie do aplikacji w czasie rzeczywistym, ale z relatywnie niższą jakością dźwięku.
  • tts-1-hd: Zapewnia wyższą jakość dźwięku, odpowiednią do potrzeb generacji mowy o wysokiej jakości, nie w czasie rzeczywistym.

Dodatkowo, TTS API OpenAI oferuje różnorodne opcje głosów:

  • Alloy
  • Echo
  • Fable
  • Onyx
  • Nova
  • Shimmer

W zależności od wymagań projektowych i grupy docelowej, można testować różne próbki głosowe, aby wybrać najbardziej odpowiedni głos. Należy wziąć pod uwagę takie czynniki jak styl przemowy, tempo mowy i intonacja, aby znaleźć głos, który przekazuje odpowiednie emocje i profesjonalizm.

3.3. Obsługiwane formaty wyjściowe i języki

Domyślnie TTS API OpenAI korzysta z formatu wyjściowego MP3, ale obsługuje również różne inne formaty dźwiękowe:

  • Opus: Odpowiedni do transmisji internetowej i komunikacji, o niskim opóźnieniu.
  • AAC: Używany do kompresji dźwięku cyfrowego, preferowany przez platformy takie jak YouTube, Android i iOS.
  • FLAC: Format bezstratnej kompresji audio używany przez audiofili do archiwizacji.

Pod względem obsługi języków, API głosu TTS w dużym stopniu podąża za modelem Whisper, oferując szeroki zakres opcji językowych w celu wsparcia wielu języków narodowych.

3.4. Funkcjonalność strumieniowania audio w czasie rzeczywistym

Aby sprostać potrzebom aplikacji działających w czasie rzeczywistym, nasze API zapewnia obsługę strumieniowania audio w czasie rzeczywistym. Poniżej znajduje się przykład w języku Python implementujący strumieniowanie audio w czasie rzeczywistym:

from openai import OpenAI

klient = OpenAI()

odpowiedź = klient.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="Cześć świecie! To jest test strumieniowania.",
)

odpowiedź.stream_to_file("output.mp3")

4. API Tekst na Mowę

4.1. Szybki Start

W tej sekcji głównie zaprezentujemy funkcjonalność API OpenAI do zamiany mowy na tekst.

Na początku musisz mieć ważny klucz API OpenAI i przygotować plik audio.

Możesz użyć polecenia curl, aby wysłać żądanie POST zawierające plik audio. Podmień OPENAI_API_KEY na swój klucz API oraz ustaw poprawną ścieżkę do pliku.

curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header 'Authorization: Bearer OPENAI_API_KEY' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/ścieżka/do/twojego/pliku/audio.mp3 \
  --form model=whisper-1

Po wykonaniu powyższego polecenia otrzymasz odpowiedź w formacie JSON zawierającą informacje o przetworzonym tekście.

Na przykład:

{
  "text": "Wyobraź sobie najbardziej szaloną ideę, jaką kiedykolwiek miałeś, i zastanawiasz się, jak mogłaby skalować się do czegoś, co jest 100, a może 1000 razy większe..."
}

4.2. Obsługiwane formaty plików i rozmiary

To API obsługuje różne powszechne formaty plików audio, aby sprostać różnym potrzebom w różnych scenariuszach. Obsługiwane formaty plików obejmują, lecz nie ograniczają się do, mp3, mp4, mpeg, mpga, m4a, wav, webm, itp. Dzięki temu użytkownicy mogą łatwo przetwarzać pliki audio z różnych źródeł.

Jeśli chodzi o rozmiar pliku, bieżące API ma limit nieprzekraczający 25MB. Oznacza to, że jeśli twój plik audio jest większy niż 25MB, będziesz musiał podzielić go na kilka segmentów mniejszych niż 25MB lub skorzystać z bardziej wydajnego formatu kompresji. Na przykład, formaty mp3 i opus zazwyczaj zapewniają efektywną kompresję, zmniejszając rozmiar pliku bez zbytniego pogorszenia jakości dźwięku.

Jeśli napotkasz plik większy niż 25MB, możesz rozważyć użycie biblioteki PyDub w języku Python do podziału twojego pliku audio:

from pydub import AudioSegment

plik_audio = AudioSegment.from_file("twój_duży_plik_audio.mp3")

odstęp = 10 * 60 * 1000  # 10 minut

segmenty = make_chunks(plik_audio, odstęp)

for i, segment in enumerate(segmenty):
    nazwa_segmentu = f"audio_segment{i}.mp3"
    segment.export(nazwa_segmentu, format="mp3")

W powyższym kodzie funkcja make_chunks podzieli duży plik audio na wiele segmentów audio z interwałem czasowym 10 minut. Te segmenty mieszczą się wszystkie w limicie rozmiaru pliku wymaganym przez API i mogą być przesłane oddzielnie do API OpenAI w celu transkrypcji.

Należy zauważyć, że choć PyDub dostarcza prosty sposób na obsługę plików audio, zawsze zaleca się zwracanie dodatkowej uwagi na bezpieczeństwo i stabilność oprogramowania innych firm podczas jego używania. OpenAI nie udziela żadnych gwarancji dotyczących oprogramowania innych firm.