Sammanfattning / Viktigaste slutsatser
- Azure Batch Transcription API tar emot ljudfiler på upp till 2,5 timmar (WAV/MP3/OGG/FLAC), bearbetar dem asynkront och returnerar en JSON-array
recognizedPhrasesmednBest-kandidater per fras, konfidenspoäng, invers textnormaliserad (ITN) utdata och valfri talardiarisering; ingen strömmande anslutning krävs (Microsoft Azure, 2024).- Microsofts neurala akustiska modeller minskade ordfelfrekvensen med cirka 50 % relativt tidigare baslinjer med dolda Markovmodeller (HMM) på det konversationella riktmärket Switchboard, och nådde paritet med professionella mänskliga transkriberare på den datamängden vid cirka 5,1 % WER (Xiong m.fl., Microsoft Research, 2016, uppdaterad 2021).
- Azure Text Analytics (numera en del av Azure AI Language) bearbetar transkripttext genom nyckelfrasextraktion, igenkänning av namngivna entiteter (NER), sentimentanalys med åsiktsutvinning och språkdetektering; allt i ett enda anrop till
analyze_sentimentellerbegin_analyze_actionsvia Python-SDK:n.- CherryPy utgör webblagret: URL-dirigering, hantering av multipart-uppladdningar, sessionshantering och rendering av Jinja2-mallar i en minimal Python-process som kan köras på en enda billig VM utan orkestreringskostnader.
- Azure Translator NMT detekterar källspråket automatiskt och översätter transkript till valfritt av 135 målspråk, vilket möjliggör efterföljande NLP-analys på både original- och översatt text inom samma pipelinekörning.
Audio Analyser ⧉ är en Python-applikation med öppen källkod som kopplar samman tre Azure Cognitive Services i ett enda arbetsflöde: Batch Transcription för tal-till-text, Azure AI Language (Text Analytics) för NLP och Azure Translator för flerspråkig utdata. Webbgränssnittet serveras av CherryPy, och resultaten kan sparas som JSON, ren text eller i en lokal SQLite-databas.
Denna artikel beskriver den tekniska arkitekturen för varje pipelinesteg, Azure-API:ernas kontrakt och designvalen i CherryPy-lagret.
Så fungerar Audio Analyser: arkitekturöversikt
Pipelinen består av fem separata steg:
- Uppladdning: användaren skickar in en ljudfil via CherryPy-webbgränssnittet. CherryPy lagrar filen i en temporär katalog och returnerar ett jobb-ID.
- Transkribering: Audio Analyser skickar filen till Azure Batch Transcription REST API. Eftersom batchtranskribering är asynkron pollar applikationen jobbstatusändpunkten med jämna mellanrum och väntar på tillståndet
Succeededinnan den går vidare. - NLP: den råa transkripttexten skickas till Azure AI Language för nyckelfrasextraktion, NER, sentimentanalys och språkdetektering.
- Översättning (valfritt): om ett målspråk anges skickas transkriptet till Azure Translator, och NLP-analysen körs på nytt på den översatta texten.
- Utdata: resultaten skrivs till det valda utdataformatet (JSON, TXT eller SQLite) och renderas i CherryPy-webbgränssnittet.
De enda körtidsberoendena utanför Pythons standardbibliotek är azure-cognitiveservices-speech, azure-ai-textanalytics, azure-ai-translation-text och cherrypy. Alla Azure-autentiseringsuppgifter läses från miljövariabler.
Azure Cognitive Services: motorn för batchtranskribering
Azure Speech-tjänstens API för batchtranskribering (/speechtotext/v3.0/transcriptions) tar emot en referens till en ljudfil i Azure Blob Storage samt en JSON-kropp med konfiguration. Audio Analyser laddar upp den lokala filen till Blob Storage med en försignerad SAS-URL och skickar därefter in transkriberingsjobbet.
En minimal nyttolast för jobbinlämning:
{
"contentUrls": ["https://<account>.blob.core.windows.net/<container>/<file>.wav?<sas>"],
"locale": "en-US",
"displayName": "audio-analyser-job-001",
"properties": {
"diarizationEnabled": true,
"wordLevelTimestampsEnabled": true,
"punctuationMode": "DictatedAndAutomatic",
"profanityFilterMode": "Masked"
}
}
Svarsarrayen recognizedPhrases innehåller ett objekt per igenkänd yttrande. Varje post innehåller:
nBest[0].confidence: flyttal mellan 0 och 1nBest[0].lexical: råa ord som de uttaladesnBest[0].itn: invers textnormaliserad form (tal, datum och valutor expanderade)nBest[0].display: formaterad för läsning, med interpunktionspeaker: heltals-ID för talare när diarisering är aktiverad
Custom Speech-finjustering finns tillgänglig för domänspecifikt ordförråd. Genom att ladda upp ett uttalslexikon eller en anpassningskorpus (en uppsättning textmeningar som är representativa för domänen) justeras språkmodellen, vilket kan minska WER väsentligt på specialiserat innehåll som finansiella termer eller medicinsk fackjargong.
Naturlig språkbehandling med Azure AI Language
Efter transkriberingen skickar Audio Analyser transkriptet i display-form till Azure AI Language via Python-SDK:n azure-ai-textanalytics:
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential
client = TextAnalyticsClient(
endpoint=os.environ["AZURE_LANGUAGE_ENDPOINT"],
credential=AzureKeyCredential(os.environ["AZURE_LANGUAGE_KEY"])
)
documents = [{"id": "1", "language": detected_lang, "text": transcript}]
sentiment_result = client.analyze_sentiment(documents, show_opinion_mining=True)
for doc in sentiment_result:
print(f"Sentiment: {doc.sentiment}")
print(f"Scores: pos={doc.confidence_scores.positive:.2f} "
f"neg={doc.confidence_scores.negative:.2f} "
f"neu={doc.confidence_scores.neutral:.2f}")
for sentence in doc.sentences:
for opinion in sentence.mined_opinions:
print(f" Target: {opinion.target.text}, "
f"Assessment: {[a.text for a in opinion.assessments]}")
keyphrases_result = client.extract_key_phrases(documents)
entities_result = client.recognize_entities(documents)
show_opinion_mining=True aktiverar sentiment på aspektnivå: API:et returnerar inte bara polaritet på dokumentnivå utan specifika par av mål och bedömning (till exempel mål="ljudkvalitet", bedömning="dålig"). Detta gör utdata användbar för att identifiera konkreta problem vid analys av kundtjänstsamtal.
Igenkänning av namngivna entiteter klassificerar textavsnitt som en av: Person, Organization, Location, Event, Product, DateTime, Quantity, IP, URL, Email, PersonType, Skill, Address, PhoneNumber.
Flerspråkigt stöd via Azure Translator
Azure Translator anropas efter språkdetekteringen när användaren begär ett målspråk. Tjänsten stöder 135 språk och dialekter med neural maskinöversättning (NMT). Audio Analyser använder REST-ändpunkten /translate med autodetect som from-parameter, så ingen specifikation av källspråk krävs:
import requests, uuid
url = "https://api.cognitive.microsofttranslator.com/translate"
params = {"api-version": "3.0", "to": target_lang}
headers = {
"Ocp-Apim-Subscription-Key": os.environ["AZURE_TRANSLATOR_KEY"],
"Ocp-Apim-Subscription-Region": os.environ["AZURE_TRANSLATOR_REGION"],
"Content-type": "application/json",
"X-ClientTraceId": str(uuid.uuid4())
}
body = [{"text": transcript}]
response = requests.post(url, params=params, headers=headers, json=body)
translated_text = response.json()[0]["translations"][0]["text"]
detected_language = response.json()[0]["detectedLanguage"]["language"]
Efter översättningen kan Audio Analyser valfritt köra Text Analytics-NLP-passet på nytt på den översatta texten, så att nyckelfraser och sentimentutdata finns tillgängliga på både käll- och målspråket.
Valet av utdataformat (JSON, TXT, SQLite) görs vid uppstart. SQLite-utdata lagrar varje analyssession som en rad med kolumner för jobb-ID, tidsstämpel, källspråk, transkript, översatt transkript, sentimentpoäng och nyckelfraser som en JSON-blob, vilket möjliggör SQL-frågor över sessioner.
CherryPy som webblager
CherryPy mappar URL-rutter till Python-metoder med klassbaserade kontroller. Audio Analyser använder tre rutter:
| Rutt | Metod | Beskrivning |
|---|---|---|
GET / |
index() |
Renderar uppladdningsformuläret |
POST /analyse |
analyse() |
Tar emot multipart-uppladdning, startar pipelinen, returnerar jobb-ID |
GET /results/<job_id> |
results() |
Pollar jobbstatus; renderar resultatsidan när jobbet är klart |
Den minimala konfigurationen håller serverns fotavtryck litet:
import cherrypy
cherrypy.config.update({
"server.socket_host": "0.0.0.0",
"server.socket_port": 8080,
"tools.sessions.on": True,
"tools.sessions.timeout": 60
})
cherrypy.quickstart(AudioAnalyserApp(), "/", conf)
Sessionstillståndet håller aktuellt jobb-ID, valt utdataformat och målspråk för översättning. CherryPys inbyggda sessionslagring är filbaserad som standard och kräver inget externt cachelager.
Vanliga frågor
Vilka ljudformat och filstorlekar accepterar Audio Analyser? Azure Batch Transcription API stöder WAV-, MP3-, OGG- och FLAC-filer på upp till 2,5 timmar. Filer utanför detta intervall bör delas upp före uppladdning. Stereofiler accepteras; konvertering till mono krävs inte.
Hur fungerar talardiarisering?
Att sätta diarizationEnabled: true i batchtranskriberingsbegäran aktiverar Azures modell för talarseparation. Varje recognizedPhrase i svaret innehåller ett heltalsfält speaker. Modellen identifierar talare utifrån akustiska egenskaper och tilldelar konsekventa ID:n inom en session, men identifierar inte vilka talarna är utan ett separat registreringssteg med röstprofil.
Behålls ljudfiler efter transkriberingen? Ljudfiler laddas upp till Azure Blob Storage med en kortlivad SAS-URL och raderas från den temporära lokala katalogen när uppladdningen är klar. Kvarhållning av blobbar i Azure Blob Storage beror på containerns livscykelpolicy; som standard sätter Audio Analyser ingen uttrycklig raderingspolicy, så att konfigurera en kort TTL-regel (till exempel radera blobbar äldre än 1 dag) i Azure-portalen rekommenderas för produktionsdriftsättningar.
Kan NLP-analysen köras utan översättning?
Ja. Översättning är ett valfritt pipelinesteg som styrs av CLI-flaggan --target-lang eller rullgardinsmenyn för målspråk i webbgränssnittet. När inget målspråk är valt kör pipelinen endast tal-till-text och Text Analytics.
Referenser
- Microsoft. Batch transcription overview: Azure AI services. Microsoft Learn, 2024. https://learn.microsoft.com/en-us/azure/ai-services/speech-service/batch-transcription
- Xiong, W. m.fl. "Achieving Human Parity in Conversational Speech Recognition." Microsoft Research Technical Report, 2016; uppdaterad 2021. https://arxiv.org/abs/1610.05256
- Microsoft. What is Azure AI Language? Microsoft Learn, 2024. https://learn.microsoft.com/en-us/azure/ai-services/language-service/overview
- Microsoft. Azure AI Translator: Supported languages. Microsoft Learn, 2024. https://learn.microsoft.com/en-us/azure/ai-services/translator/language-support
Senast granskad .
Återpublicera denna artikel
Kopiera format för Medium
# Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau > Originally published at [https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/](https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/) Audio Analyser använder neurala tal-till-text-modeller från Azure Cognitive Services, NLP via Text Analytics och CherryPy för att omvandla ljudinspelningar till sökbara transkript med sentimentpoäng, nyckelordsextraktion och flerspråkiga översättningar. Read the full article on sebastienrousseau.com: https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/
Kopiera format för Mastodon
Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau Audio Analyser använder neurala tal-till-text-modeller från Azure Cognitive Services, NLP via Text Analytics och CherryPy för att omvandla ljudinspelningar till sökbara transkript med sentimentpoäng, nyckelordsextraktion och flerspråkiga översättningar. https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/
Kopiera formaterat för LinkedIn
Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau Audio Analyser använder neurala tal-till-text-modeller från Azure Cognitive Services, NLP via Text Analytics och CherryPy för att omvandla ljudinspelningar till sökbara transkript med sentimentpoäng, nyckelordsextraktion och flerspråkiga översättningar. Här är de viktigaste strategiska lärdomarna: - Så fungerar Audio Analyser: arkitekturöversikt. Pipelinen består av fem separata steg:. - Azure Cognitive Services: motorn för batchtranskribering. Azure Speech-tjänstens API för batchtranskribering (/speechtotext/v3.0/transcriptions) tar emot en referens till en ljudfil i Azure Blob Storage samt en JSON-kropp med konfiguration. - Naturlig språkbehandling med Azure AI Language. Efter transkriberingen skickar Audio Analyser transkriptet i display-form till Azure AI Language via Python-SDK:n azure-ai-textanalytics:. - Flerspråkigt stöd via Azure Translator. Azure Translator anropas efter språkdetekteringen när användaren begär ett målspråk. Hur hanterar din organisation de utmaningar som beskrivs i denna artikel? → https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/ #AzureCognitiveServices #TalTillText #NeuralAkustiskModell #AzureTextAnalytics #NaturligSpråkbehandling Sebastien Rousseau | CC-BY-4.0
Citera den här artikeln
Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau
Audio Analyser använder neurala tal-till-text-modeller från Azure Cognitive Services, NLP via Text Analytics och CherryPy för att omvandla ljudinspelningar till sökbara transkript med sentimentpoäng, nyckelordsextraktion och flerspråkiga översättningar.
BibTeX
@online{rousseau2024audio,
author = {Rousseau, Sebastien},
title = {{Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau}},
year = {2024},
url = {https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/},
urldate = {2024}
}RIS
TY - GEN AU - Rousseau, Sebastien TI - Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau PY - 2024 UR - https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/ ER -
Vancouver
Rousseau S. Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau. sebastienrousseau.com. 2024 Jan 29. Available from: https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/
Chicago
Rousseau, Sebastien. "Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau." sebastienrousseau.com. January 29, 2024. https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/.
APA
Rousseau, S. (2024, January 29). Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau. sebastienrousseau.com. https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/
Återpublicera den här artikeln
Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau
Audio Analyser använder neurala tal-till-text-modeller från Azure Cognitive Services, NLP via Text Analytics och CherryPy för att omvandla ljudinspelningar till sökbara transkript med sentimentpoäng, nyckelordsextraktion och flerspråkiga översättningar.
Den här artikeln är licensierad under Creative Commons Attribution 4.0 International. Återpublicering kräver attribution till den kanoniska URL:en.
Audio Analyser: pipeline för Azure Speech, NLP och översättning — Sebastien Rousseau Audio Analyser använder neurala tal-till-text-modeller från Azure Cognitive Services, NLP via Text Analytics och CherryPy för att omvandla ljudinspelningar till sökbara transkript med sentimentpoäng, nyckelordsextraktion och flerspråkiga översättningar. Originally published at https://sebastienrousseau.com/sv/2024-01-29-ai-driven-ljudanalys-oversattningar-och-insikter/ by Sebastien Rousseau. Licensed under CC-BY-4.0.
