Azure AI Speech Transcription klientská knihovna pro JavaScript - verze 1.0.0-beta.1

Klientská knihovna Azure AI Speech Transcription poskytuje snadný přístup k službě převodu řeči na text od Azure, což umožňuje převádět zvuk na text s vysokou přesností.

Klientskou knihovnu použijte k:

  • Přepisujte zvukové soubory na text
  • Podpora více jazyků a lokalit
  • Povolte diarizaci mluvčích pro identifikaci různých mluvčích
  • Použijte filtrování sprostých slov
  • Použijte vlastní modely řeči
  • Zpracovávat jak lokální soubory, tak vzdálené URL adresy
  • Použijte Enhanced Mode pro transkripci a překlady poháněné LLM

Klíčové odkazy:

Začínáme

Aktuálně podporovaná prostředí

Další podrobnosti najdete v zásadách podpory.

Předpoklady

Nainstalujte balíček @azure/ai-speech-transcription.

Nainstalujte klientskou knihovnu Azure AI Speech Transcription pro JavaScript s npm:

npm install @azure/ai-speech-transcription

Vytvořte a ověřte TranscriptionClient

Pro vytvoření klientského objektu pro přístup k Azure Transcription API budete potřebovat svůj endpoint Azure Transcription resource a .credential Endpoint pro váš Azure Transcription zdroj najdete v Azure Portalu.

Možnost 1: Autentizace API klíče

Klíč API vašeho Speech resource najdete v Azure Portalu.

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

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

Pro produkční scénáře se doporučuje používat autentizaci Entra ID s řízenými identitami nebo principy služeb. Nainstalujte balíček @azure/identity:

npm install @azure/identity

Budete také muset přiřadit příslušnou roli (např. "Uživatel kognitivních služeb") vaší spravované identitě nebo principálu služby. Pro více informací viz Azure AI Services autentizace.

Pomocí Node.js a prostředí podobných uzlům můžete k ověření klienta použít třídu DefaultAzureCredential.

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

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

Pro prostředí prohlížeče použijte k ověření InteractiveBrowserCredential z balíčku @azure/identity.

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);

Verze rozhraní API služby

Klientská knihovna ve výchozím nastavení cílí na nejnovější verzi API služby. Při instancování klienta můžete zvolit konkrétní podporovanou verzi API:

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,
});

JavaScriptový balíček

Pokud chcete tuto klientskou knihovnu použít v prohlížeči, musíte nejprve použít bundler. Podrobnosti o tom, jak to udělat, najdete v naší dokumentaci k sdružování.

Klíčové koncepty

TranscriptionClient

TranscriptionClient je hlavní rozhraní pro vývojáře využívající klientskou knihovnu Azure AI Speech Transscription. Poskytuje dvě metody přetížení transcribe — jednu pro audio binární data a druhou pro audio URL.

Formáty zvuku

Služba podporuje různé audio formáty včetně WAV, MP3, OGG, FLAC a dalších. Zvuk musí být:

  • Trvá méně než 2 hodiny
  • Menší než 250 MB

Možnosti přepisu

Přepis si můžete přizpůsobit pomocí možností jako:

  • Filtrování sprostých slov: Kontrola, jak jsou sprostá slova řešena v přepisech ("None", , "Masked", "Removed", "Tags")
  • Diarisace reproduktorů: Identifikujte různé reproduktory v multispeakerovém audio (až 36 reproduktorů)
  • Seznamy frází: Poskytujte doménově specifické fráze pro zvýšení přesnosti
  • Detekce jazyka: Automaticky detekuje mluvený jazyk nebo určuje známá místa
  • Vylepšený režim: Zlepšit kvalitu přepisu pomocí LLM poháněného zpracováním, překladem a přizpůsobením promptů

Příklady

Přepište místní zvukový soubor

Nejzákladnější operací je přepsat zvukový soubor z vašeho lokálního souborového systému:

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);

Přepisujte zvuk z URL

Zvuk můžete přepisovat přímo z veřejně přístupné URL bez nutnosti stahování souboru:

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);

Získejte přístup k jednotlivým přepsaným slovům

Pro přístup k detailům na úrovni slov, včetně časových razítek, skóre důvěry a jednotlivých slov:

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`);
  }
}

Identifikujte mluvčí s diarisací

Deníková analýza mluvčích určuje, kdo mluvil při rozhovorech s více mluvčími:

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}`);
}

Poznámka: Celkový počet identifikovaných mluvčích nikdy nepřekročí maxSpeakers. Pokud skutečný zvuk obsahuje více reproduktorů, než je specifikováno, služba je konsoliduje. Nastavte rozumnou horní hranici, pokud si nejste jisti přesným počtem.

Filtrační sprostá slova

Kontrolujte, jak se sprostá slova objevují ve vašich přepisech pomocí různých filtračních režimů:

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);

Dostupné režimy:

  • "None": Žádné filtrování — sprostá slova se objevují tak, jak jsou vyslovena
  • "Masked": Sprostá slova nahrazena hvězdičkami (např. f***)
  • "Removed": Vulgarisma zcela odstraněna z textu
  • "Tags": Sprostá slova zabalená v XML tagech (např. <profanity>word</profanity>)

Zlepšujte přesnost pomocí vlastních frází

Přidejte vlastní fráze, které pomohou službě správně rozpoznávat doménově specifické výrazy, názvy a zkratky:

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);

Přepisujte v známém jazyce

Když znáte jazyk zvuku, určení jednoho místa zlepší přesnost a sníží latenci:

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);

Pro identifikaci jazyka, když si nejste jisti jazykem, zadejte více kandidátních lokalit a služba automaticky rozpozná daný jazyk:

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}`);
}

Pro nejvyšší přesnost použijte Enhanced Mode

Enhanced Mode využívá zpracování poháněné LLM pro nejvyšší přesnost přepisu:

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}`);
}

Překlad pomocí vylepšeného režimu

Enhanced Mode také podporuje překlad řeči do cílového jazyka:

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);

Kombinujte více možností

Můžete kombinovat více transkripčních funkcí pro složité scénáře:

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

Běžné problémy

  • Selhání autentizace: Ověřte, že váš API klíč nebo Entra ID jsou správné a že je váš řečový zdroj aktivní.
  • Nepodporovaný audio formát: Ujistěte se, že váš zvuk je v podporovaném formátu (WAV, MP3, OGG, FLAC atd.). Služba automaticky zajišťuje detekci formátu.
  • Pomalý přepis: U velkých souborů se ujistěte, že vaše síťové připojení je stabilní.
  • Špatná přesnost: Zkuste zadat správné místo, přidat vlastní fráze pro doménové termíny nebo použít Enhanced Mode.

Logování

Povolení protokolování může pomoct odhalit užitečné informace o chybách. Pokud chcete zobrazit protokol požadavků HTTP a odpovědí, nastavte proměnnou AZURE_LOG_LEVEL prostředí na infohodnotu . Případně můžete protokolování povolit za běhu voláním setLogLevel příkazu @azure/logger:

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

setLogLevel("info");

Podrobnější pokyny k povolení protokolů najdete v dokumentaci k @azure/protokolovacímu balíčku.

Další kroky

Prozkoumejte další ukázky a dozvíte se více o pokročilých funkcích:

Contributing

Pokud chcete přispívat do této knihovny, přečtěte si průvodce pro přispívání a přečtěte si další informace o tom, jak sestavit a otestovat kód.