Aktivera undertexter för Teams-samverkan
Lär dig hur du tillåter att dina användare aktiverar undertexter under ett Teams-samverkansscenario där dina användare kan vara i ett möte mellan en Azure Communication Services-användare och en Teams-klientanvändare, eller där dina användare använder Azure Communication Services som anropar SDK med sin Microsoft 365-identitet.
Förutsättningar
- Azure-konto med en aktiv prenumeration finns i Skapa ett konto kostnadsfritt.
- Azure Communication Services-resurs. Se Skapa en Azure Communication Services-resurs. Spara anslutningssträng för den här resursen.
- En app med röst- och videosamtal, se våra snabbstarter för röst - och videosamtal .
- Åtkomsttoken för Microsoft 365-användare.
- Åtkomsttoken för externa identitetsanvändare .
- För Översatta undertexter måste du ha en Teams Premium-licens .
Kommentar
Observera att du måste ha en röstsamtalsapp med hjälp av Azure Communication Services som anropar SDK:er för att få åtkomst till funktionen för undertexter som beskrivs i den här guiden.
Modeller
Name | beskrivning |
---|---|
CaptionsCallFeature | API för anropsfunktion för undertexter |
TeamsCaptions | API för Teams-undertexter |
StartCaptionOptions | Alternativ för dold bildtext som talat språk |
TeamsCaptionsReceivedEventArgs | Dataobjekt som tagits emot för varje Teams-undertexter som tagits emot |
Hämta funktionen för undertexter
Externa identitetsanvändare och Microsoft 365-användare
Om du skapar ett program som gör att Azure Communication Services-användare kan ansluta till ett Teams-möte
CaptionsCallFeature captionsCallFeature = call.Features.Captions;
CallCaptions callCaptions = await captionsCallFeature.GetCaptionsAsync();
if (callCaptions.CaptionsKind == CaptionsKind.TeamsCaptions)
{
TeamsCaptions teamsCaptions = callCaptions as TeamsCaptions;
}
Prenumerera på lyssnare
Lägg till en lyssnare för att ta emot undertexter aktiverade/inaktiverade status
teamsCaptions.CaptionsEnabledChanged += OnIsCaptionsEnabledChanged;
private void OnIsCaptionsEnabledChanged(object sender, PropertyChangedEventArgs args)
{
if (teamsCaptions.IsEnabled)
{
}
}
Lägg till lyssnare för mottagna textningsdata
teamsCaptions.CaptionsReceived += OnCaptionsReceived;
private void OnCaptionsReceived(object sender, TeamsCaptionsReceivedEventArgs eventArgs)
{
// Information about the speaker.
// eventArgs.Speaker
// The original text with no transcribed.
// eventArgs.SpokenText
// language identifier for the captions text.
// eventArgs.CaptionLanguage
// language identifier for the speaker.
// eventArgs.SpokenLanguage
// The transcribed text.
// eventArgs.CaptionText
// Timestamp denoting the time when the corresponding speech was made.
// eventArgs.Timestamp
// CaptionsResultKind is Partial if text contains partially spoken sentence.
// It is set to Final once the sentence has been completely transcribed.
// eventArgs.ResultKind
}
Lägg till en lyssnare för att få statusen aktivt talat språk ändrat
teamsCaptions.ActiveSpokenLanguageChanged += OnIsActiveSpokenLanguageChanged;
private void OnIsActiveSpokenLanguageChanged(object sender, PropertyChangedEventArgs args)
{
// teamsCaptions.ActiveSpokenLanguage
}
Lägg till en lyssnare för att få statusen ändrad för aktivt undertextspråk
teamsCaptions.ActiveCaptionLanguageChanged += OnIsActiveCaptionLanguageChanged;
private void OnIsActiveCaptionLanguageChanged(object sender, PropertyChangedEventArgs args)
{
// teamsCaptions.ActiveCaptionLanguage
}
Starttexter
När du har konfigurerat alla lyssnare kan du nu börja lägga till bildtexter.
private async void StartCaptions()
{
var options = new StartCaptionsOptions
{
SpokenLanguage = "en-us"
};
try
{
await teamsCaptions.StartCaptionsAsync(options);
}
catch (Exception ex)
{
}
}
Stoppa undertexter
private async void StopCaptions()
{
try
{
await teamsCaptions.StopCaptionsAsync();
}
catch (Exception ex)
{
}
}
Ta bort undertext mottagen lyssnare
teamsCaptions.CaptionsReceived -= OnCaptionsReceived;
Stöd för talat språk
Hämta en lista över talade språk som stöds
Hämta en lista över talade språk som stöds och som användarna kan välja mellan när de aktiverar undertexter.
// bcp 47 formatted language code
IReadOnlyList<string> sLanguages = teamsCaptions.SupportedSpokenLanguages;```
### Set spoken language
When the user selects the spoken language, your app can set the spoken language that it expects captions to be generated from.
``` cs
public async void SetSpokenLanguage()
{
try
{
await teamsCaptions.SetSpokenLanguageAsync("en-us");
}
catch (Exception ex)
{
}
}
Stöd för textningsspråk
Hämta undertextspråk som stöds
Om din organisation har en aktiv Teams Premium-licens kan dina Azure Communication Services-användare aktivera översatta undertexter så länge mötesorganisatören har en Teams Premium-licens. När det gäller användare med Microsoft 365-identiteter görs den här kontrollen mot deras eget användarkonto om de som möter organisatören inte har en Teams Premium-licens.
// ISO 639-1 formatted language code
IReadOnlyList<string> cLanguages = teamsCaptions.SupportedCaptionLanguages;
Ange textningsspråk
public async void SetCaptionLanguage()
{
try
{
await teamsCaptions.SetCaptionLanguageAsync("en");
}
catch (Exception ex)
{
}
}
Förutsättningar
- Azure-konto med en aktiv prenumeration finns i Skapa ett konto kostnadsfritt.
- Azure Communication Services-resurs. Se Skapa en Azure Communication Services-resurs. Spara anslutningssträng för den här resursen.
- En app med röst- och videosamtal, se våra snabbstarter för röst - och videosamtal .
- Åtkomsttoken för Microsoft 365-användare.
- Åtkomsttoken för externa identitetsanvändare .
- För Översatta undertexter måste du ha en Teams Premium-licens .
Kommentar
Observera att du måste ha en röstsamtalsapp med hjälp av Azure Communication Services som anropar SDK:er för att få åtkomst till funktionen för undertexter som beskrivs i den här guiden.
Modeller
Name | beskrivning |
---|---|
CaptionsCallFeature | API för bildtexter |
CaptionsCommon | Basklass för bildtexter |
StartCaptionOptions | Alternativ för dold bildtext som talat språk |
TeamsCaptionHandler | Motringningsdefinition för hantering av captionsReceivedEventType-händelse |
TeamsCaptionsInfo | Datastruktur som tas emot för varje CaptionsReceivedEventType-händelse |
Hämta funktionen för undertexter
Externa identitetsanvändare
Om du skapar ett program som gör att Azure Communication Services-användare kan ansluta till ett Teams-möte.
let captionsCallFeature: SDK.CaptionsCallFeature = call.feature(SDK.Features.Captions);
Microsoft 365-användare
let captionsCallFeature: SDK.CaptionsCallFeature = teamsCall.feature(SDK.Features.Captions);
Hämta objekt för teams-undertexter
Du måste hämta och casta objektet Teams-undertexter för att kunna använda specifika funktioner för Teams-undertexter
let teamsCaptions: SDK.TeamsCaptions;
if (captionsCallFeature.captions.kind === 'TeamsCaptions') {
teamsCaptions = captionsCallFeature.captions as SDK.TeamsCaptions;
}
Prenumerera på lyssnare
Lägg till en lyssnare för att ta emot undertexter som är aktiva/inaktiva
const captionsActiveChangedHandler = () => {
if (teamsCaptions.isCaptionsFeatureActive) {
/* USER CODE HERE - E.G. RENDER TO DOM */
}
}
teamsCaptions.on('CaptionsActiveChanged', captionsActiveChangedHandler);
Lägga till en lyssnare för mottagna textningsdata
Hantera det returnerade Dataobjektet TeamsCaptionsInfo.
Obs! Objektet innehåller en resultType-prop som anger om data är en partiell beskrivning eller en slutförd version av bildtexten. ResultType partial
anger live oredigerad bildtext, medan final
anger en slutförd tolkad version av meningen (d.v.s. innehåller skiljetecken och versaler).
let currentCaptionLanguage : string;
const captionsReceivedHandler : TeamsCaptionsHandler = (data: TeamsCaptionsInfo) => {
/** USER CODE HERE - E.G. RENDER TO DOM
* data.captionLanguage
* data.captionText
* data.resultType
* data.speaker
* data.spokenText
* data.timeStamp
*/
// Example code:
// Create a dom element, i.e. div, with id "captionArea" before proceeding with the sample code
if (!this._currentCaptionLanguage || this._currentCaptionLanguage === data.captionLanguage) {
let mri: string;
switch (data.speaker.identifier.kind) {
case 'communicationUser': { mri = data.speaker.identifier.communicationUserId; break; }
case 'microsoftTeamsUser': { mri = data.speaker.identifier.microsoftTeamsUserId; break; }
case 'phoneNumber': { mri = data.speaker.identifier.phoneNumber; break; }
}
const outgoingCaption = `prefix${mri.replace(/:/g, '').replace(/-/g, '')}`;
let captionArea = document.getElementById("captionArea");
const captionText = `${data.timestamp.toUTCString()}
${data.speaker.displayName}: ${data.captionText ?? data.spokenText}`;
let foundCaptionContainer = captionArea.querySelector(`.${outgoingCaption}[isNotFinal='true']`);
if (!foundCaptionContainer) {
let captionContainer = document.createElement('div');
captionContainer.setAttribute('isNotFinal', 'true');
captionContainer.style['borderBottom'] = '1px solid';
captionContainer.style['whiteSpace'] = 'pre-line';
captionContainer.textContent = captionText;
captionContainer.classList.add(newClassName);
captionArea.appendChild(captionContainer);
} else {
foundCaptionContainer.textContent = captionText;
if (captionData.resultType === 'Final') {
foundCaptionContainer.setAttribute('isNotFinal', 'false');
}
}
}
};
teamsCaptions.on('CaptionsReceived', captionsReceivedHandler);
Lägg till en lyssnare för att få ändrat status för talat språk
const spokenLanguageChangedHandler = () => {
if (teamsCaptions.activeSpokenLanguage !== currentSpokenLanguage) {
/* USER CODE HERE - E.G. RENDER TO DOM */
}
}
teamsCaptions.on('SpokenLanguageChanged', spokenLanguageChangedHandler)
Lägg till en lyssnare för att få statusen ändrad i bildtextspråket
const captionLanguageChangedHandler = () => {
if (teamsCaptions.activeCaptionLanguage !== currentCaptionLanguage) {
/* USER CODE HERE - E.G. RENDER TO DOM */
}
}
teamsCaptions.on('CaptionLanguageChanged', captionLanguageChangedHandler)
Starttexter
När du har konfigurerat alla lyssnare kan du nu börja lägga till bildtexter.
try {
await teamsCaptions.startCaptions({ spokenLanguage: 'en-us' });
} catch (e) {
/* USER ERROR HANDLING CODE HERE */
}
Stoppa undertexter
try {
teamsCaptions.stopCaptions();
} catch (e) {
/* USER ERROR HANDLING CODE HERE */
}
Avsluta prenumerationen på lyssnare
teamsCaptions.off('CaptionsActiveChanged', captionsActiveChangedHandler);
teamsCaptions.off('CaptionsReceived', captionsReceivedHandler);
Stöd för talat språk
Hämta en lista över talade språk som stöds
Hämta en lista över talade språk som stöds och som användarna kan välja mellan när de aktiverar undertexter. Egenskapen returnerar en matris med språk i bcp 47-format.
const spokenLanguages = teamsCaptions.supportedSpokenLanguages;
Ange talat språk
Skicka in ett värde från matrisen talade språk som stöds för att säkerställa att det begärda språket stöds. Om contoso inte tillhandahåller något språk eller ett språk som inte stöds är standardspråket "en-us".
// bcp 47 formatted language code
const language = 'en-us';
// Altneratively, pass a value from the supported spoken languages array
const language = spokenLanguages[0];
try {
teamsCaptions.setSpokenLanguage(language);
} catch (e) {
/* USER ERROR HANDLING CODE HERE */
}
Stöd för textningsspråk
Hämta en lista över undertextspråk som stöds
Om din organisation har en aktiv Teams Premium-licens kan du tillåta att användarna använder översatta bildtexter som tillhandahålls av Teams-undertexter. När det gäller användare med en Microsoft 365-identitet, om mötesorganisatören inte har en aktiv Teams Premium-licens, görs språkkontrollen för undertexter mot Microsoft 365-användarkontot.
Egenskapen returnerar en matris med språkkoder med två bokstäver i ISO 639-1
standard.
const captionLanguages = teamsCaptions.supportedCaptionLanguages;
Ange textningsspråk
// ISO 639-1 formatted language code
const language = 'en';
// Altneratively, pass a value from the supported caption languages array
const language = captionLanguages[0];
try {
teamsCaptions.setCaptionLanguage(language);
} catch (e) {
/* USER ERROR HANDLING CODE HERE */
}
Förutsättningar
- Azure-konto med en aktiv prenumeration finns i Skapa ett konto kostnadsfritt.
- Azure Communication Services-resurs. Se Skapa en Azure Communication Services-resurs. Spara anslutningssträng för den här resursen.
- En app med röst- och videosamtal, se våra snabbstarter för röst - och videosamtal .
- Åtkomsttoken för Microsoft 365-användare.
- Åtkomsttoken för externa identitetsanvändare .
- För Översatta undertexter måste du ha en Teams Premium-licens .
Kommentar
Observera att du måste ha en röstsamtalsapp med hjälp av Azure Communication Services som anropar SDK:er för att få åtkomst till funktionen för undertexter som beskrivs i den här guiden.
Modeller
Name | beskrivning |
---|---|
CaptionsCallFeature | API för anropsfunktion för undertexter |
TeamsCaptions | API för Teams-undertexter |
StartCaptionOptions | Alternativ för dold bildtext som talat språk |
TeamsCaptionsListener | Lyssnare för TeamsCaptions addOnCaptionsReceivedListener |
TeamsCaptionsReceivedEvent | Dataobjekt som tas emot för varje TeamsCaptionsListener-händelse |
Hämta funktionen för undertexter
Externa identitetsanvändare och Microsoft 365-användare
Om du skapar ett program som gör det möjligt för användare att ansluta till ett Teams-möte
CaptionsCallFeature captionsCallFeature = call.feature(Features.CAPTIONS);
captionsCallFeature.getCaptions().whenComplete(
((captions, throwable) -> {
if (throwable == null) {
CallCaptions callCaptions = captions;
if (captions.getCaptionsType() == CaptionsType.TEAMS_CAPTIONS) {
// teams captions
TeamsCaptions teamsCaptions = (TeamsCaptions) captions;
}
} else {
// get captions failed
// throwable is the exception/cause
}
}));
Prenumerera på lyssnare
Lägg till en lyssnare för att ta emot undertexter aktiverade/inaktiverade status
public void addOnIsCaptionsEnabledChangedListener() {
teamsCaptions.addOnCaptionsEnabledChangedListener( (PropertyChangedEvent args) -> {
if(teamsCaptions.isEnabled()) {
// captions enabled
}
});
}
Lägg till lyssnare för mottagna textningsdata
TeamsCaptionsListener captionsListener = (TeamsCaptionsReceivedEvent args) -> {
// Information about the speaker.
// CallerInfo participantInfo = args.getSpeaker();
// The original text with no transcribed.
// args.getSpokenText();
// language identifier for the captions text.
// args.getCaptionLanguage();
// language identifier for the speaker.
// args.getSpokenLanguage();
// The transcribed text.
// args.getCaptionText();
// Timestamp denoting the time when the corresponding speech was made.
// args.getTimestamp();
// CaptionsResultType is Partial if text contains partially spoken sentence.
// It is set to Final once the sentence has been completely transcribed.
// args.getResultType() == CaptionsResultType.FINAL;
};
public void addOnCaptionsReceivedListener() {
teamsCaptions.addOnCaptionsReceivedListener(captionsListener);
}
Lägg till en lyssnare för att få statusen aktivt talat språk ändrat
public void addOnActiveSpokenLanguageChangedListener() {
teamsCaptions.addOnActiveSpokenLanguageChangedListener( (PropertyChangedEvent args) -> {
// teamsCaptions.getActiveSpokenLanguage()
});
}
Lägg till en lyssnare för att få statusen ändrad för aktivt undertextspråk
public void addOnActiveCaptionLanguageChangedListener() {
teamsCaptions.addOnActiveCaptionLanguageChangedListener( (PropertyChangedEvent args) -> {
// teamsCaptions.getActiveCaptionLanguage()
});
}
Starttexter
När du har konfigurerat alla lyssnare kan du nu börja lägga till bildtexter.
public void startCaptions() {
StartCaptionsOptions startCaptionsOptions = new StartCaptionsOptions();
startCaptionsOptions.setSpokenLanguage("en-us");
teamsCaptions.startCaptions(startCaptionsOptions).whenComplete((result, error) -> {
if (error != null) {
}
});
}
Stoppa undertexter
public void stopCaptions() {
teamsCaptions.stopCaptions().whenComplete((result, error) -> {
if (error != null) {
}
});
}
Ta bort undertext mottagen lyssnare
public void removeOnCaptionsReceivedListener() {
teamsCaptions.removeOnCaptionsReceivedListener(captionsListener);
}
Stöd för talat språk
Hämta en lista över talade språk som stöds
Hämta en lista över talade språk som stöds och som användarna kan välja mellan när de aktiverar undertexter.
// bcp 47 formatted language code
teamsCaptions.getSupportedSpokenLanguages();
Ange talat språk
När användaren väljer det talade språket kan appen ange det talade språk som den förväntar sig att undertexter ska genereras från.
public void setSpokenLanguage() {
teamsCaptions.setSpokenLanguage("en-us").whenComplete((result, error) -> {
if (error != null) {
}
});
}
Stöd för textningsspråk
Hämta undertextspråk som stöds
Om din organisation har en aktiv Teams Premium-licens kan dina Azure Communication Services-användare aktivera översatta undertexter så länge mötesorganisatören har en Teams Premium-licens. När det gäller användare med Microsoft 365-identiteter görs den här kontrollen mot deras eget användarkonto om de som möter organisatören inte har en Teams Premium-licens.
// ISO 639-1 formatted language code
teamsCaptions.getSupportedCaptionLanguages();
Ange textningsspråk
public void setCaptionLanguage() {
teamsCaptions.setCaptionLanguage("en").whenComplete((result, error) -> {
if (error != null) {
}
});
}
Förutsättningar
- Azure-konto med en aktiv prenumeration finns i Skapa ett konto kostnadsfritt.
- Azure Communication Services-resurs. Se Skapa en Azure Communication Services-resurs. Spara anslutningssträng för den här resursen.
- En app med röst- och videosamtal, se våra snabbstarter för röst - och videosamtal .
- Åtkomsttoken för Microsoft 365-användare.
- Åtkomsttoken för externa identitetsanvändare .
- För Översatta undertexter måste du ha en Teams Premium-licens .
Kommentar
Observera att du måste ha en röstsamtalsapp med hjälp av Azure Communication Services som anropar SDK:er för att få åtkomst till funktionen för undertexter som beskrivs i den här guiden.
Modeller
Name | beskrivning |
---|---|
CaptionsCallFeature | API för anropsfunktion för undertexter |
TeamsCaptions | API för Teams-undertexter |
StartCaptionOptions | Alternativ för dold bildtext som talat språk |
TeamsCaptionsDelegate | Ombud för Teams-undertexter |
TeamsCaptionsReceivedEventArgs | Dataobjekt som tagits emot för varje Teams-undertexter som tagits emot |
Hämta funktionen för undertexter
Externa identitetsanvändare och Microsoft 365-användare
Om du skapar ett program som gör att Azure Communication Services-användare kan ansluta till ett Teams-möte
if let call = self.call {
@State var captionsCallFeature = call.feature(Features.captions)
captionsCallFeature.getCaptions{(value, error) in
if let error = error {
// failed to get captions
} else {
if (value?.type == CaptionsType.teamsCaptions) {
// teams captions
@State var teamsCaptions = value as? TeamsCaptions
}
}
}
}
Prenumerera på lyssnare
Lägg till en lyssnare för att ta emot undertexter aktiverade/inaktiverade, talat språk, status för textningsspråk har ändrats och mottagna data
extension CallObserver: TeamsCaptionsDelegate {
// listener for receive captions enabled/disabled status
public func teamsCaptions(_ teamsCaptions: TeamsCaptions, didChangeCaptionsEnabledState args: PropertyChangedEventArgs) {
// teamsCaptions.isEnabled
}
// listener for active spoken language state change
public func teamsCaptions(_ teamsCaptions: TeamsCaptions, didChangeActiveSpokenLanguageState args: PropertyChangedEventArgs) {
// teamsCaptions.activeSpokenLanguage
}
// listener for active caption language state change
public func teamsCaptions(_ teamsCaptions: TeamsCaptions, didChangeActiveCaptionLanguageState args: PropertyChangedEventArgs) {
// teamsCaptions.activeCaptionLanguage
}
// listener for captions data received
public func teamsCaptions(_ teamsCaptions: TeamsCaptions, didReceiveCaptions:TeamsCaptionsReceivedEventArgs) {
// Information about the speaker.
// didReceiveCaptions.speaker
// The original text with no transcribed.
// didReceiveCaptions.spokenText
// language identifier for the captions text.
// didReceiveCaptions.captionLanguage
// language identifier for the speaker.
// didReceiveCaptions.spokenLanguage
// The transcribed text.
// didReceiveCaptions.captionText
// Timestamp denoting the time when the corresponding speech was made.
// didReceiveCaptions.timestamp
// CaptionsResultType is Partial if text contains partially spoken sentence.
// It is set to Final once the sentence has been completely transcribed.
// didReceiveCaptions.resultType
}
}
teamsCaptions.delegate = self.callObserver
Starttexter
När du har konfigurerat alla lyssnare kan du nu börja lägga till bildtexter.
func startCaptions() {
guard let teamsCaptions = teamsCaptions else {
return
}
let startCaptionsOptions = StartCaptionsOptions()
startCaptionsOptions.spokenLanguage = "en-us"
teamsCaptions.startCaptions(startCaptionsOptions: startCaptionsOptions, completionHandler: { (error) in
if error != nil {
}
})
}
Stoppa undertexter
func stopCaptions() {
teamsCaptions.stopCaptions(completionHandler: { (error) in
if error != nil {
}
})
}
Ta bort undertext mottagen lyssnare
teamsCaptions?.delegate = nil
Stöd för talat språk
Hämta en lista över talade språk som stöds
Hämta en lista över talade språk som stöds och som användarna kan välja mellan när de aktiverar undertexter.
// bcp 47 formatted language code
let spokenLanguage : String = "en-us"
for language in teamsCaptions?.supportedSpokenLanguages ?? [] {
// choose required language
spokenLanguage = language
}
Ange talat språk
När användaren väljer det talade språket kan appen ange det talade språk som den förväntar sig att undertexter ska genereras från.
func setSpokenLanguage() {
guard let teamsCaptions = self.teamsCaptions else {
return
}
teamsCaptions.set(spokenLanguage: spokenLanguage, completionHandler: { (error) in
if let error = error {
}
})
}
Stöd för textningsspråk
Hämta undertextspråk som stöds
Om din organisation har en aktiv Teams Premium-licens kan dina Azure Communication Services-användare aktivera översatta undertexter så länge mötesorganisatören har en Teams Premium-licens. När det gäller användare med Microsoft 365-identiteter görs den här kontrollen mot deras eget användarkonto om de som möter organisatören inte har en Teams Premium-licens.
// ISO 639-1 formatted language code
let captionLanguage : String = "en"
for language in teamsCaptions?.supportedCaptionLanguages ?? [] {
// choose required language
captionLanguage = language
}
Ange textningsspråk
func setCaptionLanguage() {
guard let teamsCaptions = self.teamsCaptions else {
return
}
teamsCaptions.set(captionLanguage: captionLanguage, completionHandler: { (error) in
if let error = error {
}
})
}
Rensa resurser
Om du vill rensa och ta bort en Communication Services-prenumeration kan du ta bort resursen eller resursgruppen. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort. Läs mer om att rensa resurser här.
Nästa steg
Mer information finns i följande artiklar:
- Läs mer om röst- och videosamtal.
- Lär dig mer om Teams-samverkan.
- Läs mer om liveöversatta bildtexter i Microsoft Teams.
- Läs mer om användargränssnittsbiblioteket.