Dela via


Azure AI Speech Transcription klientbibliotek för JavaScript - version 1.0.0-beta.1

Azure AI Speech Transcription-klientbiblioteket ger enkel tillgång till Azures tal-till-text-transkriptionstjänst, vilket gör det möjligt att konvertera ljud till text med hög noggrannhet.

Använd klientbiblioteket för att:

  • Transkribera ljudfiler till text
  • Stöd för flera språk och platser
  • Aktivera högtalardiarisering för att identifiera olika talare
  • Använd svordomsfiltrering
  • Använd anpassade talmodeller
  • Bearbeta både lokala filer och fjärradresser
  • Använd Enhanced Mode för LLM-driven transkription och översättning

Nyckellänkar:

Komma igång

Miljöer som stöds för närvarande

Mer information finns i vår supportprincip.

Förutsättningar

Installera @azure/ai-speech-transcription-paketet

Installera Azure AI Speech Transcription-klientbiblioteket för JavaScript med npm:

npm install @azure/ai-speech-transcription

Skapa och autentisera en TranscriptionClient

För att skapa ett klientobjekt för att komma åt Azure Transcription API behöver du din endpoint Azure Transcription-resurs och en credential. Du kan hitta slutpunkten för din Azure Transcription-resurs i Azure Portal.

Alternativ 1: API-nyckelautentisering

Du kan hitta din Speech-resurs API-nyckel i Azure Portal.

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

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

För produktionsscenarier rekommenderas att använda entra-ID-autentisering med hanterade identiteter eller tjänstehuvuden. Installera @azure/identity-paketet:

npm install @azure/identity

Du måste också tilldela rätt roll (t.ex. "Cognitive Services User") till din hanterade identitet eller tjänstehuvudansvarig. För mer information, se Azure AI Services autentisering.

Med hjälp av Node.js- och Node-liknande miljöer kan du använda klassen DefaultAzureCredential för att autentisera klienten.

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

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

För webbläsarmiljöer använder du InteractiveBrowserCredential från @azure/identity-paketet för att autentisera.

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

Versioner av tjänst-API:er

Klientbiblioteket riktar sig som standard till den senaste versionen av service-API. Du kan välja en specifik stödd API-version när du instansierar klienten:

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

JavaScript-paket

Om du vill använda det här klientbiblioteket i webbläsaren måste du först använda en bundler. Mer information om hur du gör detta finns i vår paketeringsdokumentation.

Viktiga begrepp

Transkriberingsklient

TranscriptionClient är det primära gränssnittet för utvecklare som använder Azure AI Speech Transcription-klientbiblioteket. Den erbjuder två överbelastade transcribe metoder — en för ljudbinär data och en för ljud-URL:er.

Ljudformat

Tjänsten stödjer olika ljudformat inklusive WAV, MP3, OGG, FLAC och fler. Ljudet måste vara:

  • Kortare än 2 timmar varaktig
  • Mindre än 250 MB i storlek

Transkriberingsalternativ

Du kan anpassa transkriptionen med alternativ som:

  • Svordomsfiltrering: Kontrollera hur svordomar hanteras i transkriptioner ("None", "Masked", "Removed", ) "Tags"
  • Högtalardiarisering: Identifiera olika högtalare i multihögtalarljud (upp till 36 högtalare)
  • Fraslistor: Tillhandahåll domänspecifika fraser för att förbättra noggrannheten
  • Språkdetektion: Automatiskt upptäcka det talade språket, eller ange kända platser
  • Förbättrat läge: Förbättra transkriptionskvaliteten med LLM-driven bearbetning, översättning och promptbaserad anpassning

Exempel

Transkribera en lokal ljudfil

Den mest grundläggande funktionen är att transkribera en ljudfil från ditt lokala filsystem:

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

Transkribera ljud från en URL

Du kan transkribera ljudet direkt från en offentligt tillgänglig URL utan att först ladda ner filen:

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

Åtkomst till enskilda transkriberade ord

För att få tillgång till detaljer på ordnivå, inklusive tidsstämplar, konfidenspoäng och enskilda ord:

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

Identifiera talare med diarisering

Talardiaarisering identifierar vem som talade när de var i samtal med flera talare:

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

Observera: Det totala antalet identifierade talare kommer aldrig att överstiga maxSpeakers. Om det faktiska ljudet innehåller fler högtalare än vad som anges kommer tjänsten att konsolidera dem. Sätt en rimlig övre gräns om du är osäker på det exakta antalet.

Filtersvordomar

Kontrollera hur svordomar visas i dina transkriptioner med olika filterlägen:

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

Tillgängliga lägen:

  • "None": Ingen filtrering — svordomar förekommer som uttalade
  • "Masked": Svordomar ersatta med asterisker (t.ex. f***)
  • "Removed": Svordomar helt borttagna från texten
  • "Tags": Svordomar inbäddade i XML-taggar (t.ex. <profanity>word</profanity>)

Förbättra noggrannheten med anpassade fraser

Lägg till egna fraser för att hjälpa tjänsten att korrekt känna igen domänspecifika termer, namn och akronymer:

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

Transkribera med ett känt språk

När du kan ljudets språk förbättrar det noggrannheten att specificera en enda plats och minskar latensen:

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

För språkidentifiering när du är osäker på språket, ange flera kandidatplatser så kommer tjänsten automatiskt att upptäcka språket:

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

Använd Enhanced Mode för högsta noggrannhet

Enhanced Mode använder LLM-driven bearbetning för högst noggrann transkribering:

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

Översätt med Förbättrat läge

Enhanced Mode stödjer också översättning av tal till ett målspråk:

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

Kombinera flera alternativ

Du kan kombinera flera transkriptionsfunktioner för komplexa scenarier:

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

Felsökning

Vanliga problem

  • Autentiseringsfel: Verifiera att din API-nyckel eller Entra-ID-uppgifter är korrekta och att din Speech-resurs är aktiv.
  • Ej stödd ljudformat: Se till att ditt ljud är i ett stödd format (WAV, MP3, OGG, FLAC, etc.). Tjänsten hanterar automatiskt formatdetektering.
  • Långsam transkription: För stora filer, se till att din nätverksanslutning är stabil.
  • Dålig noggrannhet: Försök att ange rätt plats, lägga till egna fraser för domänspecifika termer eller använda Enhanced Mode.

Loggning

Aktivering av loggning kan hjälpa dig att hitta användbar information om fel. Om du vill se en logg med HTTP-begäranden och svar anger du AZURE_LOG_LEVEL miljövariabeln till info. Du kan också aktivera loggning vid körning genom att anropa setLogLevel i @azure/logger:

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

setLogLevel("info");

Mer detaljerade anvisningar om hur du aktiverar loggar finns i dokument för @azure/logger-paket.

Nästa steg

Utforska fler exempel för att lära dig mer om avancerade funktioner:

Contributing

Om du vill bidra till det här biblioteket kan du läsa bidragsguide för att lära dig mer om hur du skapar och testar koden.