Udostępnij za pośrednictwem


Azure AI Speech Transcription biblioteka kliencka dla JavaScript - wersja 1.0.0-beta.1

Biblioteka klienta Azure AI Speech Transcription zapewnia łatwy dostęp do usługi transkrypcji mowy na tekst Azure, umożliwiając konwersję dźwięku na tekst z dużą dokładnością.

Użyj biblioteki klienta, aby:

  • Przepisz pliki audio na tekst
  • Wspierać wiele języków i lokalizacji
  • Włącz dziennik mówców, aby rozpoznać różnych mówców
  • Stosuj filtrowanie przekleństw
  • Używaj niestandardowych modeli mowy
  • Przetwarzaj zarówno pliki lokalne, jak i zdalne adresy URL
  • Użyj Enhanced Mode do transkrypcji i tłumaczenia opartej na LLM

Kluczowe linki:

Rozpoczęcie pracy

Obecnie obsługiwane środowiska

  • Wersje LTS systemu Node.js
  • Najnowsze wersje przeglądarek Safari, Chrome, Edge i Firefox.

Zobacz naszą politykę support po więcej szczegółów.

Wymagania wstępne

Instalowanie pakietu @azure/ai-speech-transcription

Zainstaluj bibliotekę klienta Azure AI Speech Transcription dla JavaScript za pomocą npm:

npm install @azure/ai-speech-transcription

Twórz i uwierzytelnij TranscriptionClient

Aby utworzyć obiekt klienta do dostępu do API Azure Transcription, będziesz potrzebować swojego endpoint zasobu Azure Transcription oraz .credential Punkt końcowy dla swojego zasobu Azure Transcription znajdziesz w Azure Portal.

Opcja 1: Uwierzytelnianie klucza API

Klucz API swojego zasobu mowy znajdziesz w Azure Portal.

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));

W scenariuszach produkcyjnych zaleca się używanie uwierzytelniania Entra ID z zarządzanymi tożsamościami lub zasadami usług. @azure/identity Zainstaluj pakiet:

npm install @azure/identity

Będziesz także musiał przypisać odpowiednią rolę (np. "Użytkownik usług kognitywnych") do swojej zarządzanej tożsamości lub dostawcy usługi. Więcej informacji można znaleźć w artykule Azure AI Services authentication (uwierzytelnianie Azure AI Services).

Korzystając ze środowisk Node.js i środowisk podobnych do węzłów, możesz użyć klasy DefaultAzureCredential do uwierzytelniania klienta.

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { DefaultAzureCredential } from "@azure/identity";

const client = new TranscriptionClient("<endpoint>", new DefaultAzureCredential());

W środowiskach przeglądarkowych użyj InteractiveBrowserCredential z pakietu @azure/identity do uwierzytelnienia.

import { InteractiveBrowserCredential } from "@azure/identity";
import { TranscriptionClient } from "@azure/ai-speech-transcription";

const credential = new InteractiveBrowserCredential({
  tenantId: "<YOUR_TENANT_ID>",
  clientId: "<YOUR_CLIENT_ID>",
});
const client = new TranscriptionClient("<endpoint>", credential);

Wersje interfejsu API usługi

Biblioteka klienta domyślnie celuje w najnowszą wersję API usług. Możesz wybrać konkretną obsługiwaną wersję API podczas instancji klienta:

import { TranscriptionClient, KnownServiceApiVersions } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"), {
  serviceVersion: KnownServiceApiVersions.V20251015,
});

Pakiet JavaScript

Aby użyć tej biblioteki klienta w przeglądarce, najpierw należy użyć pakietu. Szczegóły dotyczące to do tego można znaleźć w naszej dokumentacji bundling.

Kluczowe pojęcia

TranscriptionClient

TranscriptionClient jest głównym interfejsem dla programistów korzystających z biblioteki klienta Azure AI Speech Transcription. Oferuje dwie metody przeciążenia transcribe — jedną dla danych binarnych audio i jedną dla adresów URL audio.

Formaty audio

Usługa obsługuje różne formaty audio, w tym WAV, MP3, OGG, FLAC i inne. Dźwięk musi być:

  • Trwa krócej niż 2 godziny
  • Mniejszy niż 250 MB

Opcje transkrypcji

Możesz dostosować transkrypcję za pomocą opcji takich jak:

  • Filtrowanie przekleństw: Kontroluj sposób, w jaki przekleństwa są traktowane w transkrypcjach ("None", "Masked", , "Removed", "Tags")
  • Dziennik głośników: Identyfikacja różnych głośników w dźwięku wielogłośnikowym (do 36 głośników)
  • Listy fraz: Dostarczaj frazy specyficzne dla danej dziedziny, aby poprawić dokładność
  • Wykrywanie języka: Automatycznie wykrywa język mówiony lub określa znane lokalizacje
  • Tryb rozszerzony: Poprawa jakości transkrypcji dzięki przetwarzaniu, tłumaczeniu i personalizacji opartej na promptach opartej na LLM

Examples

Przepisz lokalny plik audio

Najprostszą operacją jest przepisanie pliku audio z lokalnego systemu plików:

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/audio.wav");
const result = await client.transcribe(audioFile);
console.log(`Duration: ${result.durationInMs}ms`);
console.log("Transcription:", result.combinedPhrases[0]?.text);

Przepisz dźwięk z adresu URL

Możesz transkrybować dźwięk bezpośrednio z publicznie dostępnego adresu URL bez wcześniejszego pobierania pliku:

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const result = await client.transcribe("https://example.com/audio/sample.wav", {
  locales: ["en-US"],
});
console.log("Transcription:", result.combinedPhrases[0]?.text);

Uzyskaj dostęp do indywidualnych przepisanych słów

Aby uzyskać dostęp do szczegółów na poziomie słów, w tym znaczników czasu, wyników zaufania i poszczególnych słów:

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/audio.wav");
const result = await client.transcribe(audioFile);
for (const phrase of result.phrases) {
  console.log(`Phrase: ${phrase.text}`);
  console.log(
    `  Offset: ${phrase.offsetMilliseconds}ms | Duration: ${phrase.durationMilliseconds}ms`,
  );
  console.log(`  Confidence: ${phrase.confidence.toFixed(2)}`);
  // Access individual words in the phrase
  for (const word of phrase.words ?? []) {
    console.log(`    Word: '${word.text}' | Offset: ${word.offsetMilliseconds}ms`);
  }
}

Identyfikacja mówiących z diaryzacją

Dziennik mówcy określa, kto mówił podczas rozmów wielomówców:

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/conversation.wav");
const result = await client.transcribe(audioFile, {
  diarizationOptions: {
    maxSpeakers: 4, // Expect up to 4 speakers in the conversation
  },
});
for (const phrase of result.phrases) {
  console.log(`Speaker ${phrase.speaker}: ${phrase.text}`);
}

Uwaga: Łączna liczba zidentyfikowanych mówców nigdy nie przekroczy maxSpeakers. Jeśli faktyczny dźwięk zawiera więcej głośników niż jest deklarowane, usługa je skonsoliduje. Ustal rozsądną górną granicę, jeśli nie jesteś pewien dokładnej liczby.

Filtrowanie wulgaryzmów

Kontroluj, jak przekleństwa pojawiają się w transkrypcjach, stosując różne tryby filtrowania:

import { TranscriptionClient, KnownProfanityFilterModes } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/audio.wav");
const result = await client.transcribe(audioFile, {
  profanityFilterMode: KnownProfanityFilterModes.Masked, // Default - profanity replaced with asterisks
});
console.log("Transcription:", result.combinedPhrases[0]?.text);

Dostępne tryby:

  • "None": Brak filtrowania — wulgaryzmy pojawiają się w formie wypowiedzianej
  • "Masked": Przekleństwa zastąpione gwiazdkami (np. f***)
  • "Removed": Wulgaryzmy całkowicie usunięte z tekstu
  • "Tags": Wulgaryzmy owinięte w tagi XML (np. <profanity>word</profanity>)

Popraw dokładność za pomocą własnych fraz

Dodaj własne frazy, które pomogą usłudze poprawnie rozpoznawać terminy, nazwy i akronimy specyficzne dla domeny:

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/audio.wav");
const result = await client.transcribe(audioFile, {
  phraseList: {
    phrases: ["Contoso", "Jessie", "Rehaan"],
  },
});
console.log("Transcription:", result.combinedPhrases[0]?.text);

Transkrybować znanym językiem

Gdy znasz język dźwięku, określenie jednego miejsca poprawia dokładność i zmniejsza opóźnienia:

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/english-audio.mp3");
const result = await client.transcribe(audioFile, {
  locales: ["en-US"],
});
console.log("Transcription:", result.combinedPhrases[0]?.text);

Aby rozpoznać język, gdy nie jesteś pewien, określ kilka lokalizacji kandydatów, a usługa automatycznie wykryje język:

import { TranscriptionClient } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/audio.mp3");
const result = await client.transcribe(audioFile, {
  locales: ["en-US", "es-ES"],
});
for (const phrase of result.phrases) {
  console.log(`[${phrase.locale}] ${phrase.text}`);
}

Użyj Enhanced Mode dla najwyższej dokładności

Tryb rozszerzony wykorzystuje przetwarzanie oparte na LLM dla najwyższej dokładności transkrypcji:

import { TranscriptionClient, KnownProfanityFilterModes } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/audio.wav");
const result = await client.transcribe(audioFile, {
  // Enhanced mode: LLM-powered speech recognition with prompt customization
  enhancedMode: {
    task: "transcribe",
    prompt: ["Output must be in lexical format."],
  },
  // Existing Fast Transcription options work alongside enhanced mode
  diarizationOptions: {
    maxSpeakers: 2,
  },
  profanityFilterMode: KnownProfanityFilterModes.Masked,
  activeChannels: [0, 1],
});
for (const phrase of result.phrases) {
  console.log(`[Speaker ${phrase.speaker}] ${phrase.text}`);
}

Tłumaczenie za pomocą Enhanced Mode

Tryb rozszerzony wspiera także tłumaczenie mowy na język docelowy:

import { TranscriptionClient, KnownProfanityFilterModes } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/chinese-audio.wav");
const result = await client.transcribe(audioFile, {
  enhancedMode: {
    task: "translate",
    targetLanguage: "ko", // Translate to Korean
  },
  profanityFilterMode: KnownProfanityFilterModes.Masked,
});
console.log("Translated to Korean:", result.combinedPhrases[0]?.text);

Połącz wiele opcji

Możesz łączyć wiele funkcji transkrypcji dla złożonych scenariuszy:

import { TranscriptionClient, KnownProfanityFilterModes } from "@azure/ai-speech-transcription";
import { AzureKeyCredential } from "@azure/core-auth";
import { readFileSync } from "node:fs";

const client = new TranscriptionClient("<endpoint>", new AzureKeyCredential("<api-key>"));
const audioFile = readFileSync("path/to/meeting.wav");
const result = await client.transcribe(audioFile, {
  // Enable speaker diarization
  diarizationOptions: {
    maxSpeakers: 5,
  },
  // Mask profanity
  profanityFilterMode: KnownProfanityFilterModes.Masked,
  // Add custom phrases
  phraseList: {
    phrases: ["action items", "Q4", "KPIs"],
  },
});
console.log("Full Transcript:");
console.log(result.combinedPhrases[0]?.text);
for (const phrase of result.phrases) {
  console.log(`Speaker ${phrase.speaker}: ${phrase.text}`);
}

Troubleshooting

Typowe problemy

  • Awarie uwierzytelniania: Sprawdź, czy klucz API lub dane uwierzytelniające Entra ID są poprawne oraz czy Twój zasób mowy jest aktywny.
  • Nieobsługiwany format audio: Upewnij się, że Twój dźwięk jest w obsługiwanym formacie (WAV, MP3, OGG, FLAC itd.). Usługa automatycznie obsługuje wykrywanie formatu.
  • Wolna transkrypcja: W przypadku dużych plików upewnij się, że połączenie sieciowe jest stabilne.
  • Słaba dokładność: Spróbuj określić właściwe miejsce, dodać własne frazy dla terminów specyficznych dla domeny lub użyć Enhanced Mode.

Przemysł drzewny

Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną środowiskową AZURE_LOG_LEVEL na info. Alternatywnie logowanie można włączyć w czasie działania, wywołując setLogLevel w @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentacją pakietu @azure/logger.

Następne kroki

Poznaj dodatkowe przykłady, aby dowiedzieć się więcej o zaawansowanych funkcjach:

Contributing

Jeśli chcesz przyczynić się do tej biblioteki, przeczytaj przewodnik wkład aby dowiedzieć się więcej o budowaniu i testowaniu kodu.