Przejdź do nawigacji

Wykrywanie encji

Ten przewodnik pokazuje, jak używać wykrywania encji z API Speech to Text.

Przewodnik · Zakłada, że masz już za sobą krótki przewodnik po Speech to Text .

Omówienie

Wykrywanie encji to funkcja, która pozwala wykrywać określone słowa i frazy w transkrypcji oraz podaje ich dokładne znaczniki czasu. Przydaje się do wykrywania numerów kart kredytowych, imion i nazwisk, schorzeń czy numerów SSN, które można następnie zredagować.

Po włączeniu model wykryje określone typy encji w transkrypcji i poda ich dokładne znaczniki czasu.

Na przykład poniższe audio:

Zwraca następującą transkrypcję, gdy jako typ encji podamy "pii" (dane umożliwiające identyfikację osoby):

{
"language_code": "eng",
"language_probability": 0.9869821071624756,
"text": "My name is Jill. My date of birth is the 12th of July 1987, and my credit card number is 4242-4242-4242-4242.",
"words": [
{ "text": "My", "start": 0.099, "end": 0.259, "type": "word", "logprob": 0.0 },
{ "text": " ", "start": 0.259, "end": 0.299, "type": "spacing", "logprob": 0.0 },
{ "text": "name", "start": 0.299, "end": 0.42, "type": "word", "logprob": 0.0 },
...
],
"transcription_id": "Y2ZX8AxHUzTPCIualYiE",
"entities": [
{
"text": "Jill",
"entity_type": "name",
"start_char": 11,
"end_char": 15
},
{
"text": "12th of July 1987",
"entity_type": "dob",
"start_char": 41,
"end_char": 58
},
{
"text": "4242-4242-4242-4242",
"entity_type": "credit_card",
"start_char": 89,
"end_char": 108
}
]
}

Wynik pokazuje encje PII wykryte w transkrypcji wraz z ich dokładnymi znacznikami czasu.

Integracja wykrywania encji

Wykrywanie encji integruje się z API Speech to Text przez przekazanie parametru entity_detection do metody convert.

import os
from dotenv import load_dotenv
from io import BytesIO
import requests
from elevenlabs.client import ElevenLabs
load_dotenv()
elevenlabs = ElevenLabs(
api_key=os.getenv("ELEVENLABS_API_KEY"),
)
audio_url = (
"https://storage.googleapis.com/eleven-public-cdn/documentation_assets/audio/stt-entity-detection-pii.mp3"
)
response = requests.get(audio_url)
audio_data = BytesIO(response.content)
transcription = elevenlabs.speech_to_text.convert(
file=audio_data,
model_id="scribe_v3", # Model to use
# Entity types to detect, accepts a list of specific entity types or categories.
# To detect all entity types, use the "all" category.
entity_detection=["pii"],
)
print("Entities detected:", transcription.entities)

Typy encji

Do wykrywania obsługiwane są następujące typy encji. Możesz wykrywać całe grupy za pomocą słów kluczowych kategorii pii, phi, pci, other lub offensive_language albo wskazać konkretne typy encji za pomocą ich etykiet. Aby wykryć wszystkie typy encji, użyj kategorii all.

EtykietaOpisZgodność z przepisami
account_numberNumer identyfikacyjny konta klienta lub członkostwaCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
ageLiczby powiązane z wiekiem osobyGDPR, HIPAA, Quebec Privacy Act, APPI
bank_accountNumery kont bankowych i ich międzynarodowe odpowiedniki, np. IBANCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
cardinalWyrażenia liczbowe w formie liczebników głównych
credit_cardNumery kart kredytowychCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
credit_card_expirationData ważności karty kredytowejCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
cvv3- lub 4-cyfrowe kody weryfikacyjne kart i ich odpowiednikiCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
dateKonkretne daty kalendarzowe, w tym dni tygodnia, daty, miesiące lub lataHIPAA, Quebec Privacy Act
date_intervalSzersze okresy, w tym zakresy dat, miesiące, pory roku, lata i dekadyHIPAA
dobDaty urodzeniaCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
driver_licenseNumery praw jazdyCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
email_addressAdresy e-mailCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
eventNazwy wydarzeń lub świąt
filenameNazwy plików komputerowych, w tym rozszerzenie lub ścieżka pliku
genderOkreślenia wskazujące tożsamość płciową, w tym slangCPRA, GDPR, GDPR Sensitive, APPI Sensitive
gender_sexualityStarszy alias obejmujący gender i sexual_orientationCPRA, GDPR, GDPR Sensitive, APPI Sensitive
sexual_orientationOkreślenia wskazujące orientację seksualną, w tym slangCPRA, GDPR, GDPR Sensitive, APPI Sensitive
healthcare_numberNumery opieki zdrowotnej i numery beneficjentów planów zdrowotnychCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
ip_addressAdres IP w internecie, w tym formaty IPv4 i IPv6CPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
locationMetaklasa dla każdego wskazania nazwanej lokalizacjiGDPR, HIPAA, APPI
location_addressPełne lub częściowe adresy fizyczne i korespondencyjneCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
location_cityNazwy gmin, w tym wsi, miasteczek i miastCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
location_coordinatePozycje geograficzne określane współrzędnymi szerokości, długości i/lub wysokościCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
location_countryNazwy krajówGDPR, APPI
location_stateNazwy stanów, prowincji, terytoriów lub prefekturGDPR, APPI
location_zipKody ZIP (w tym ZIP+4), kody pocztoweCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
moneyNazwy i/lub kwoty walut
nameImiona i nazwiska osób, bez tytułów grzecznościowych, np. „Pani” lub „Pan”CPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
name_givenImiona nadane osobie, zwykle przy urodzeniu; w kulturach zachodnich często imię i drugie imięCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
name_familyNazwy wskazujące rodzinę lub społeczność osoby; w kulturach zachodnich często nazwiskoCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
name_medical_professionalNazwy wraz z tytułem specjalisty medycznego, np. „Doctor”CPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
numerical_piiNumeryczne PII, które nie należą do innych kategoriiCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
occupationStanowiska lub zawodyQuebec Privacy Act, APPI
ordinalWyrażenia liczbowe w formie liczebników porządkowych
originOkreślenia wskazujące narodowość, pochodzenie etniczne lub rodowódCPRA, GDPR, GDPR Sensitive, Quebec Privacy Act, APPI Sensitive
passport_numberNumery paszportów wydanych przez dowolny krajCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
passwordHasła do kont, kody PIN, klucze dostępu lub odpowiedzi weryfikacyjneCPRA, APPI
percentWyrażenia liczbowe jako wartości procentowe
phone_numberNumery telefonów lub faksówCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
physical_attributeCharakterystyczne cechy fizyczne, w tym określenia rasyCPRA, GDPR, GDPR Sensitive, APPI Sensitive
ssnNumery ubezpieczenia społecznego lub międzynarodowe odpowiedniki rządowych numerów IDCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
timeWyrażenia wskazujące godziny
urlAdresy internetoweCPRA, GDPR, HIPAA, Quebec Privacy Act
usernameNazwy użytkowników, nazwy logowania lub identyfikatoryCPRA, GDPR, APPI
vehicle_idNumery identyfikacyjne pojazdów (VIN), numery seryjne pojazdów i numery rejestracyjneCPRA, GDPR, HIPAA, APPI
EtykietaOpisZgodność z przepisami
conditionNazwy schorzeń, chorób, zespołów, deficytów i zaburzeńCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI Sensitive
drugLeki, witaminy i suplementyCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI Sensitive
injuryUrazy ciała, w tym mutacje, poronienia i zwichnięciaCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI Sensitive
blood_typeGrupy krwiCPRA, GDPR, HIPAA, Quebec Privacy Act
medical_processProcesy medyczne, w tym leczenie, procedury i badaniaCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI Sensitive
clinical_measurementPomiary kliniczne, parametry życiowe i wyniki badań laboratoryjnychCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI Sensitive
statisticsStarszy alias dla clinical_measurementHIPAA, Quebec Privacy Act
EtykietaOpisZgodność z przepisami
credit_cardNumery kart kredytowychCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
credit_card_expirationData ważności karty kredytowejCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
cvv3- lub 4-cyfrowe kody weryfikacyjne kart i odpowiednikiCPRA, GDPR, HIPAA, Quebec Privacy Act, APPI
EtykietaOpisZgodność z przepisami
languageNazwy języków naturalnychGDPR, GDPR Sensitive, APPI Sensitive
marital_statusOkreślenia wskazujące stan cywilnyAPPI Sensitive
organizationNazwy organizacji lub działów w organizacjiQuebec Privacy Act, APPI
political_affiliationOkreślenia odnoszące się do partii, ruchu lub ideologiiCPRA, GDPR, GDPR Sensitive, Quebec Privacy Act, APPI Sensitive
religionOkreślenia wskazujące przynależność religijnąCPRA, GDPR, GDPR Sensitive, Quebec Privacy Act, APPI Sensitive
routing_numberNumer rozliczeniowy powiązany z bankiem lub instytucją finansową
zodiac_signNazwy znaków zodiaku
product_or_serviceNazwy produktów lub usług komercyjnych
food_or_beverageNazwy żywności, napojów i dań
document_referenceOdniesienia do dokumentów, numerów spraw lub identyfikatorów plików
generic_idOgólne identyfikatory nienależące do innych kategorii ID
measurementPomiary fizyczne i ilości z jednostkami
time_durationWyrażenia wskazujące długość lub zakres czasu
EtykietaOpisZgodność z przepisami
very_offensive_languageMocno obraźliwy język, w tym obelgi
less_offensive_languageLekko obraźliwy lub nieodpowiedni język

Redagowanie encji

Oprócz wykrywania encji możesz usuwać je z tekstu transkrypcji za pomocą parametru entity_redaction. Przyjmuje on ten sam format co entity_detection: all, słowo kluczowe kategorii lub listę konkretnych typów encji. Redagowane typy muszą być podzbiorem wykrywanych typów.

Gdy redagowanie jest włączone, dopasowany tekst encji zostaje zastąpiony znacznikiem zarówno w tekście transkrypcji, jak i w danych wyjściowych na poziomie słów, a pole entities nie jest zwracane w odpowiedzi.

transcription = elevenlabs.speech_to_text.convert(
file=audio_file,
model_id="scribe_v3",
entity_detection=["pii"],
entity_redaction=["pii"],
entity_redaction_mode="enumerated_entity_type",
)
print(transcription.text)
# "Hi {NAME_0}, your card ending in {CREDIT_CARD_0} was declined."

Parametr entity_redaction_mode określa format znacznika:

TrybZnacznikPrzykład
redacted{REDACTED} dla każdej encjiHi {REDACTED}
entity_typeTyp encji w nawiasach klamrowychHi {NAME}
enumerated_entity_typeTyp encji i licznik wystąpieńHi {NAME_0} (domyślnie)

Wykrywanie i redagowanie encji nie są obsługiwane w stylu danych wyjściowych dla wielu kanałów combined.

Redagowanie encji działa też z Scribe v2 Realtime: przekaż entity_redaction i entity_redaction_mode jako parametry zapytania, w tym samym formacie co powyżej. Po każdej zatwierdzonej transkrypcji następuje wtedy zdarzenie redacted_transcript zawierające oryginalny text oraz redacted_text. Zobacz dokumentację zdarzeń w czasie rzeczywistym.

Kolejne kroki