Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Kod źródłowy
- Pakiet (NPM)
- Dokumentacja referencyjna interfejsu API
- dokumentacja produktu
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>"));
Opcja 2: Uwierzytelnianie Entra ID (zalecane do produkcji)
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
- Przepisz dźwięk z adresu URL
- Uzyskaj dostęp do indywidualnych przepisanych słów
- Identyfikacja mówiących z diaryzacją
- Filtrowanie wulgaryzmów
- Popraw dokładność za pomocą własnych fraz
- Transkrybować znanym językiem
- Użyj Enhanced Mode dla najwyższej dokładności
- Tłumaczenie za pomocą Enhanced Mode
- Połącz wiele opcji
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:
- Podstawowa transkrypcja – Tworzenie klientów i podstawowa transkrypcja
- Opcje transkrypcji – Łącz wiele funkcji transkrypcji
- Transkrypcja z adresu URL - Transkrypcja z odległych adresów URL
- Tryb rozszerzony – transkrypcja i tłumaczenie oparte na LLM
- Filtrowanie przekleństw - Wszystkie tryby filtrowania przekleństw
- Dziennik mówcy – identyfikacja mówcy
- Lista frazów – Własne słownictwo
- Transkrypcja z lokalizacją – specyfikacja i wykrywanie języka
- Transkrypcja wielojęzyczna – zawartość wielojęzyczna (podgląd)
Contributing
Jeśli chcesz przyczynić się do tej biblioteki, przeczytaj przewodnik wkład aby dowiedzieć się więcej o budowaniu i testowaniu kodu.
Powiązane projekty
Azure SDK for JavaScript