Jak przygotować dane szkoleniowe dotyczące formatowania tekstu wyświetlanego na potrzeby niestandardowej mowy
Usługa Azure AI Speech service może być wyświetlana jako dwa składniki: rozpoznawanie mowy i wyświetlanie formatowania tekstu. Rozpoznawanie mowy transkrybuje dźwięk do tekstu leksyktycznego, a następnie tekst leksyktyczny jest przekształcany w celu wyświetlania tekstu.
Są to ustawienia regionalne, które obsługują funkcję formatowania tekstu wyświetlanego: da-DK, de-DE, en-AU, en-CA, en-GB, en-HK, en-IE, en-IN, en-NG, en-NZ, en-PH, en-SG, en-US, es-ES, es-MX, fi-FI, fr-CA, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, sv-SE, tr-TR, zh-CN, zh-HK.
Domyślne formatowanie tekstu wyświetlanego
Potok wyświetlania tekstu składa się z sekwencji konstruktorów formatów wyświetlania. Każdy konstruktor odpowiada zadaniu formatu wyświetlania, takim jak ITN, wielkie litery i filtrowanie wulgaryzmów.
- Inverse Text Normalization (ITN) — aby przekonwertować tekst w postaci mówionej na formularz. Na przykład:
"I spend twenty dollars" -> "I spend $20"
. - Wielkie litery — nazwy jednostek, akronimów lub pierwszej litery zdania. Na przykład:
"she is from microsoft" -> "She is from Microsoft"
. - Filtrowanie wulgaryzmów — maskowanie lub usuwanie słów wulgaryzmów z zdania. Na przykład przy założeniu, że "abcd" jest wyrazem wulgaryzmów, to słowo jest maskowane przez maskowanie wulgaryzmów:
"I never say abcd" -> "I never say ****"
Firma Microsoft obsługuje podstawowe konstruktory potoku wyświetlania tekstu na potrzeby zadań przetwarzania ogólnego przeznaczenia. Konstruktory podstawowe są domyślnie uzyskiwane podczas korzystania z usługi Mowa. Aby uzyskać więcej informacji na temat formatowania gotowego do użycia, zobacz Wyświetlanie formatu tekstu.
Niestandardowe formatowanie tekstu wyświetlanego
Oprócz konstruktorów podstawowych obsługiwanych przez firmę Microsoft można zdefiniować niestandardowe reguły formatowania tekstu wyświetlania w celu dostosowania potoku formatowania tekstu wyświetlanego dla określonych scenariuszy. Niestandardowe reguły formatowania tekstu wyświetlanego są definiowane w niestandardowym pliku formatowania tekstu wyświetlanego.
- Niestandardowa nazwa ITN — rozszerzanie funkcjonalności podstawowej nazwy ITN przez zastosowanie niestandardowego modelu ITN opartego na regule od klienta.
- Ponowne zapisywanie niestandardowe — ponowne zapisywanie jednej frazy na innej na podstawie modelu opartego na regule od klienta.
- Niestandardowe filtrowanie wulgaryzmów — wykonaj obsługę wulgaryzmów na podstawie listy słów wulgaryzmów od klienta.
Kolejność potoku formatowania tekstu wyświetlanego jest pokazana na tym diagramie.
Niestandardowa nazwa ITN
Filozofią niestandardowej nazwy ITN opartej na wzorcu jest określenie końcowych danych wyjściowych, które chcesz zobaczyć. Usługa rozpoznawania mowy określa, w jaki sposób słowa mogą być wypowiadane i mapowane przewidywane wyrażenia mówione na określony format danych wyjściowych.
Niestandardowy model ITN jest tworzony na podstawie zestawu reguł ITN. Reguła ITN to wyrażenie regularne, takie jak ciąg wzorca, który opisuje:
- Pasujący wzorzec ciągu wejściowego
- Żądany format ciągu wyjściowego
Domyślne reguły ITN udostępniane przez firmę Microsoft są stosowane najpierw. Dane wyjściowe domyślnego modelu ITN są używane jako dane wejściowe niestandardowego modelu ITN. Algorytm dopasowania wewnątrz niestandardowego modelu ITN jest niewrażliwy na wielkość liter.
Istnieją cztery kategorie dopasowywania wzorców z niestandardowymi regułami ITN.
- Wzorce z literałami
- Wzorce z symbolami wieloznacznymi
- Wzorce z notacją w stylu regularnym
- Wzorce z jawnym zastąpieniem
Wzorce z literałami
Na przykład deweloper może mieć element (taki jak produkt) o nazwie z postacią JO:500
alfanumeryczną . Usługa rozpoznawania mowy określa, że użytkownicy mogą powiedzieć część litery jako J O
, lub mogą powiedzieć joe
, oraz część cyfry jako five hundred
lub five zero zero
lub five oh oh
five double zero
, a następnie utworzyć model, który mapuje wszystkie te możliwości z powrotem na JO:500
(w tym wstawianie dwukropka).
Wzorce można stosować równolegle, określając jedną regułę na wiersz w pliku formatowania tekstu wyświetlanego. Oto przykład pliku formatowania tekstu wyświetlanego, który określa dwie reguły:
JO:500
MM:760
Wzorce z symbolami wieloznacznymi
Można odwoływać się do całej serii elementów alfanumerycznych (takich jak JO:500
, JO:600
), JO:700
bez konieczności sprawdzania wszystkich możliwości na kilka sposobów.
Zakresy znaków można określić za pomocą notacji [...]
, więc JO:[5-7]00
jest odpowiednikiem zapisywania trzech wzorców.
Istnieje również zestaw elementów wieloznacznych, których można użyć. Jednym z nich jest \d
, co oznacza dowolną cyfrę. W związku z tym JO:\d00
obejmuje wartości , JO:100
i inne do JO:900
JO:000
.
Podobnie jak wyrażenie regularne, istnieje wiele wstępnie zdefiniowanych klas znaków dla reguły ITN:
\d
— dopasuj cyfrę z "0" do "9" i wyprowadza ją bezpośrednio\l
- dopasowuje literę (bez uwzględniania wielkości liter) i transduj ją do małej litery\u
- dopasowuje literę (bez uwzględniania wielkości liter) i transduj ją na wielkie litery\a
- dopasowuje literę (bez uwzględniania wielkości liter) i wyprowadza ją bezpośrednio
Istnieją również wyrażenia ucieczki do odwoływania się do znaków, które w przeciwnym razie mają specjalne znaczenie składni:
\\
- dopasuj i wyprowadza znak\
\(
i\)
\{
i\}
\|
\+
i i\?
\*
Wzorce z notacją w stylu regularnym
Aby zwiększyć elastyczność pisania wzorców, obsługiwane są konstrukcje wyrażenia regularnego przypominające frazy z alternatywami i zamknięcie kleene.
- Fraza jest wskazywana nawiasami, na przykład
(...)
— nawiasy nie są dosłownie liczone jako znaki do dopasowania. - Alternatywy można wskazać w frazie z znakiem
|
takim jak(AB|CDE)
. - Możesz sufiksować frazę z
?
, aby wskazać, że jest opcjonalna, aby wskazać,+
że można ją powtórzyć lub*
wskazać oba te elementy. Można tylko sufiksować frazy z tymi znakami, a nie poszczególnymi znakami (co jest bardziej restrykcyjne niż większość implementacji wyrażeń regularnych).
Wzorzec, taki jak reprezentuje konstrukcje, takie jak (AB|CD)-(\d)+
"AB-9" lub "CD-22", i można je rozszerzyć na słowa mówione, takie jak A B nine
i C D twenty two
(lub C D two two
).
Wzorce z jawnym zastąpieniem
Ogólna filozofia to "pokazujesz, jak powinny wyglądać dane wyjściowe, a usługa mowa dowiesz się, jak ludzie to mówią". Ale to nie zawsze działa, ponieważ niektóre scenariusze mogą mieć dziwaczne nieprzewidywalne sposoby mówienia rzeczy lub reguły w tle usługi Mowa mogą mieć luki. Na przykład może istnieć potoczna wymowa inicjałów i akronimów — ZPI
może być mówiona jako zippy
. W takim przypadku wzorzec ZPI-\d\d
podobny jest mało prawdopodobne, aby działać, jeśli użytkownik mówi zippy twenty two
. W takiej sytuacji istnieje notacja {spoken>written}
formatu tekstu wyświetlanego. Ten konkretny przypadek można wypisać {zippy>ZPI}-\d\d
.
Może to być przydatne w przypadku obsługi elementów, które są obsługiwane przez reguły mapowania mowy, ale nie są jeszcze obsługiwane. Na przykład można napisać wzorzec \d0-\d0
, który oczekuje, że system zrozumie, że "-" może oznaczać zakres i powinien być wymawiany to
, jak w twenty to thirty
. Ale być może tak nie jest. Możesz więc napisać bardziej wyraźny wzorzec, taki jak \d0{to>-}\d0
i poinformować o tym, jak oczekujesz, że kreska będzie odczytywana.
Możesz również pominąć tekst >
i następujący formularz, aby wskazać wyrazy, które powinny być rozpoznawane, ale ignorowane. Dlatego wzorzec, taki jak {write} (\u.)+
rozpoznawanie write A B C
i dane wyjściowe A.B.C
— upuszczanie write
części.
Niestandardowe przykłady ITN
Cyfry grupy
Aby zgrupować 6 cyfr w dwie grupy i dodać znak "-" między nimi:
Reguła ITN:
\d\d\d-\d\d\d
Przykład:"cadence one oh five one fifteen" -> "cadence 105-115"
Formatowanie nazwy filmu
Przestrzeń: 1999 jest słynnym filmem, aby go wspierać:
Reguła ITN:
Space: 1999
Przykład:"watching space nineteen ninety nine" -> "watching Space: 1999"
Wzorzec z zastąpieniem
Reguła ITN:
\d[05]{ to >-}\d[05]
Przykład:fifteen to twenty -> 15-20
Ponowne zapisywanie niestandardowe
Ogólnie rzecz biorąc, w przypadku ciągu wejściowego model ponownego zapisywania próbuje zastąpić original phrase
element w ciągu wejściowym odpowiadającym new phrase
każdej regule ponownego zapisywania. Model ponownego zapisywania to kolekcja reguł ponownego zapisywania.
- Reguła ponownego zapisywania to para dwóch fraz: oryginalna fraza i nowa fraza.
- Te dwie frazy są oddzielone znakiem TAB. Na przykład
original phrase
{TAB}new phrase
. - Oryginalna fraza jest dopasowywana (bez uwzględniania wielkości liter) i zastąpiona nową frazą (z uwzględnieniem wielkości liter). Znaki interpunkcyjne gramatyki w oryginalnej frazie są ignorowane podczas dopasowywania.
- Jeśli jakiekolwiek reguły ponownego zapisywania powodują konflikt, ten z dłuższym
original phrase
użyciem jest używany jako dopasowanie.
Model ponownego zapisywania domyślnie obsługuje literę gramatyki, co powoduje, że pierwsza litera zdania będzie wielkich liter dla en-US
takich ustawień regionalnych. Jest ona wyłączona, jeśli funkcja formatowania tekstu wyświetlanego jest wyłączona w żądaniu rozpoznawania mowy.
Interpunkcja gramatyki
Znaki interpunkcyjne gramatyki są używane do oddzielania zdania lub frazy i wyjaśniania, jak należy odczytać zdanie lub frazę.
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
Oto reguły interpunkcji gramatycznych:
- Obsługiwane znaki interpunkcyjne są przeznaczone dla znaków interpunkcyjnych gramatycznych, jeśli następuje spacja, na początku lub na końcu zdania lub frazy. Na przykład in
.
x. y
(z spacją między.
iy
) jest znakiem interpunkcyjnym gramatyki. - Znaki interpunkcyjne, które znajdują się w środku słowa (z wyjątkiem
zh-cn
ija-jp
) nie są znakiem interpunkcyjnym. W takim przypadku są to zwykłe znaki. Na przykład element.
inx.y
nie jest znakiem interpunkcyjnym gramatyki. - W przypadku
zh-cn
ustawień regionalnych ija-jp
(bez przerywania) znaki interpunkcyjne są zawsze używane jako znaki interpunkcyjne, nawet jeśli znajdują się między znakami. Na przykład element.
in中.文
jest znakiem interpunkcyjnym gramatyki.
Niestandardowe przykłady ponownego zapisywania
Poprawianie pisowni
Nazwa COVID-19
może być rozpoznawana jako covered 19
. Aby upewnić się, że COVID-19 is a virus
jest wyświetlany zamiast covered 19 is a virus
, użyj następującej reguły ponownego zapisywania:
#rewrite
covered 19{TAB}COVID-19
Wielkie litery nazw
Gottfried William Leibniz był niemieckim matematykiem. Aby upewnić się, że jest to Gottfried Wilhelm Leibniz
kapitalizowane, użyj następującej reguły ponownego zapisywania:
#rewrite
gottfried leibniz{TAB}Gottfried Leibniz
Wulgaryzm niestandardowy
Niestandardowy model wulgaryzmów działa tak samo jak podstawowy model wulgaryzmów, z wyjątkiem użycia niestandardowej listy fraz wulgaryzmów. Ponadto niestandardowy model wulgaryzmów próbuje dopasować (bez uwzględniania wielkości liter) wszystkie frazy wulgaryzmów zdefiniowane w pliku formatowania tekstu wyświetlanego.
- Frazy wulgaryzmów są dopasowywane (bez uwzględniania wielkości liter).
- Jeśli jakiekolwiek frazy wulgaryzmów powodują konflikt, najdłuższa fraza jest używana jako dopasowanie.
- Te znaki interpunkcyjne nie są obsługiwane w frazie wulgaryzmów:
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
. - W przypadku
zh-CN
ija-JP
ustawień regionalnych frazy wulgaryzmów w języku angielskim nie są obsługiwane. Angielskie wulgaryzmy są obsługiwane. Wulgaryzmy dlazh-CN
ustawień regionalnych ija-JP
są obsługiwane.
Wulgaryzm jest usuwany lub maskowany w zależności od ustawień żądania rozpoznawania mowy.
Po dodaniu wulgaryzmów w pliku reguły formatu tekstu wyświetlania i wytrenowaniu modelu niestandardowego jest używany do domyślnych danych wyjściowych w usłudze Zamiana mowy wsadowej na tekst i zamiana mowy w czasie rzeczywistym na tekst.
Niestandardowe przykłady wulgaryzmów
Poniżej przedstawiono kilka przykładów maskowania wulgaryzmów i fraz w pliku formatowania tekstu wyświetlanego.
Maskuj pojedynczy przykład słowa wulgaryzmów
Przyjmijmy xyz
, że jest to słowo wulgaryzmów. Aby go dodać:
#profanity
xyz
Oto przykład testowy: Turned on profanity masking to mask xyz -> Turned on profanity masking to mask ***
Maskuj frazę wulgaryzmów
Załóżmy abc lmn
, że jest frazą wulgaryzmów. Aby go dodać:
#profanity
abc lmn
Oto przykład testowy: Turned on profanity masking to mask abc lmn -> Turned on profanity masking to mask *** ***