8

Pierwsza część to pytanie jest teraz jej rękę, tutaj: Analyzing Text for AccentsDodawanie Akcenty do syntezy mowy

Pytanie: Jak można akcenty zostać dodany do wygenerowanego mowy?

Co mam wymyślić:

nie mam na myśli tylko znaki akcentu, a przegięcie, czy cokolwiek osobliwy tak. Mam na myśli coś w rodzaju pełnego brytyjskiego akcentu, szkockiego akcentu lub rosyjskiego itd.

Sądzę, że można to zrobić również poza językiem. Ex: coś w języku rosyjskim może być generowane z brytyjskim akcentem, lub coś w mandaryńskim może mieć rosyjski akcent.

myślę podstawowy proces byłby to:

  1. analizować tekst
    • Porównaj z bazą danych (czy coś takiego) w celu ustalenia, co musi akcent, jak silne powinno być, itp
  2. Generowanie mowy w określonym języku
    • E w przypadku zwykłych procesorów przetwarzania tekstu na mowę.
  3. Określ określony akcent na podstawie analizowanego tekstu.
    • To jest część, o której mowa.
    • Myślę, że zestaw amplitud i filtrów najlepiej sprawdzi się w następnym kroku.
  4. Siatka mowy i akcent.
    • To byłaby łatwa część.
    • Prawdopodobnie można to zrobić poprzez pomnożenie mowy przez akcent, tak jak czyni to wiele innych metod DSP.

To jest naprawdę bardziej ogólne pytanie DSP, ale chciałbym wymyślić algorytm Zautomatyzowane to zrobić zamiast ogólnej idei.

+0

Istnieją (co najmniej) dwa całkowicie rozłączne pytania tutaj: część o analizę tekstu, a część o syntezie mowy. Te powinny być zadawane jako oddzielne pytania SO. –

+0

@ O Pomyślałem o tym, ale część analityczna jest tak ściśle związana z częścią pokolenia, że ​​myślę, że powinni być razem. – Jon

+0

Hmmm. Pierwszy to w zasadzie problem analizy składni/analizy tekstowej; drugi jest zasadniczo problemem DSP. Zakres wydaje się nieco zbyt szeroki dla pytania dotyczącego przepełnienia stosu ... –

Odpowiedz

2

Co to jest akcent?

Akcent nie jest filtrem dźwięku; jest to wzór akustycznej realizacji tekstu w języku. Nie możesz nagrać amerykańskiego angielskiego, poprowadzić go przez "zestaw amplitud i filtrów" i wypuścić brytyjski angielski. Do czego służy DSP, to implementacja prosody, bez akcentu.

Zasadniczo (i najprostszy model) akcent składa się z reguł dla fonetycznej realizacji sekwencji fonemów. Na percepcję akcentu dodatkowo wpływa by prosody i przez które fonemy wybiera głośnik podczas czytania tekstu.

generacji mowy

Proces syntezy mowy ma dwa podstawowe etapy:

  1. Text-to-fonemów: Konwersja tekstu pisanego do sekwencji fonemów (plus suprasegmentals jak stres i prozodycznych informacji jak granice wypowiedzi). Jest to nieco zależne od akcentu (np. Wynik dla "laboratorium" różni się między mówcami z USA i Wielkiej Brytanii).

  2. Fonemu na mowę: biorąc pod uwagę sekwencję fonemów, generuj audio zgodnie z zasadami dialektu dla fonetycznych realizacji fonemów. (Zazwyczaj łączymy dyfony, a następnie dostosowujemy akustycznie prozodię). Jest to bardzo zależne od akcentów i to właśnie ten krok nadaje głównej jakości akcent. Konkretny fonemu, nawet jeśli dzielony jest między dwa akcenty, może mieć uderzająco różne realizacje akustyczne.

Zazwyczaj są sparowane. Podczas gdy ty mógł mieć generator mowy z akcentem brytyjskim, który używa wymowy amerykańskiej, brzmiałoby to dziwnie.

Generowanie mowy z danym akcentem

pisząc program zamiany tekstu na mowę jest ogromną ilość pracy (w szczególności w celu realizacji jednego wspólnego systemu, trzeba nagrać native speaker mówiący każdą możliwą dyfonicznych w język), więc lepiej byłoby użyć istniejącego.

Krótko mówiąc, jeśli chcesz brytyjskiego akcentu, użyj brytyjskiego tekstu do fonemu silnika wraz z brytyjskim angielskim fonemem do mowy.

W przypadku popularnych akcentów, takich jak amerykański i brytyjski angielski, standardowy mandaryński, francuski, itp., Będzie kilka opcji, w tym te o otwartym kodzie źródłowym, które można modyfikować (jak poniżej). Na przykład spójrz na FreeTTS i eSpeak. W przypadku mniej powszechnych akcentów istniejące silniki mogą niestety nie istnieć.

Mówiąc tekst z obcym akcentem

angielski-z-obcego akcentu jest społecznie nie bardzo prestiżowe, tak kompletne systemy prawdopodobnie nie istnieje.

Jedna ze strategii polega na połączeniu gotowego silnika tekstu z fonemem dla natywnego akcentu z fonemem na mowę dla obcego języka. Na przykład native speaker rosyjski, który uczył się angielskiego w USA, słusznie użyłby amerykańskiej wymowy słów, takich jak laboratory, i zamapowałby swoje fonemy na swoje rodzime rosyjskie fonemy, wymawiając je tak, jak w języku rosyjskim. (Wierzę, że istnieje strona internetowa, która robi to dla języka angielskiego i japońskiego, ale nie mam linku.)

Problem polega na tym, że wynik jest zbyt wysoki. Prawdziwy angielski uczeń próbowałby rozpoznać i wygenerować fonemy, które nie istnieją w jego ojczystym języku, a także zmieniłby jego realizację swoich rodzimych fonemów w celu przybliżenia natywnej wymowy. To, jak dokładnie wynik jest zgodny z językiem ojczystym, oczywiście jest różne, ale używanie czystych obcych ekstremalnych dźwięków jest śmieszne (i w większości niezrozumiałe).

Aby wygenerować przekonujący akcent amerykańsko-angielski z rosyjskim (na przykład), trzeba napisać silnik tekstu do fonemu. Jako punkt wyjściowy można użyć istniejących amerykańskich i rosyjskich silników tekst-fonemat. Jeśli nie chcesz znaleźć i nagrać takiego głośnika, prawdopodobnie możesz uzyskać przyzwoite przybliżenie za pomocą DSP, aby połączyć próbki z tych dwóch silników. W przypadku eSpeak wykorzystuje syntezę formantów zamiast nagranych próbek, więc łatwiej jest łączyć informacje z wielu języków.

Inną kwestią, którą należy wziąć pod uwagę, jest to, że obcokrajowcy często modyfikują sekwencję fonemów pod wpływem fonotaktyki swojego języka ojczystego, zazwyczaj poprzez upraszczanie skupień spółgłosek, wstawianie samogłosek epentetycznych lub dyfundowanie lub łamanie sekwencji samogłosek.

There is some literature on this topic.

+1

Wow ... to wiele przydatnych informacji. Nie jestem do końca pewien, co jeszcze mogę powiedzieć, ale jest to najlepsza odpowiedź, jaką myślę, że dostanę. – Jon

4

To pytanie nie jest tak naprawdę "programowaniem" jako takim: jest językoznawstwem. Programowanie jest stosunkowo łatwe. W przypadku analizy będzie to naprawdę trudne, a prawdę mówiąc, prawdopodobnie lepiej będzie, gdy użytkownik określi akcent; A może wybierasz automatyczny czytnik historii?

Podstawowy akcent można jednak uzyskać dzięki nowoczesnemu tekstowi na mowę. Czy znasz międzynarodowy alfabet fonetyczny? http://en.wikipedia.org/wiki/International_Phonetic_Alphabet Zawiera listę wszystkich dźwięków, które może wykonać ludzki głos. Akcentem jest wówczas jedynie odwzorowanie (funkcja A) z alfabetu na siebie. Na przykład, aby amerykański akcent brzmiał brytyjsko dla amerykańskiej osoby (Chociaż nie wystarczy, aby brzmiało to brytyjsko dla Brytyjczyków), możesz zdefragacować wszystkie dźwięki "r" w środku słowa.Na przykład tryl pęcherzykowy zostanie zastąpiony dźwięcznym fricative uvular. (Mnóstwo narożnych przypadków do opracowania właśnie dla tego).

Długo i krótko: To nie jest łatwe, prawdopodobnie dlatego nikt tego nie zrobił. Jestem pewna, że ​​kilku profesorów językoznawstwa na zewnątrz powie, że to niemożliwe. Ale to właśnie robią profesorowie lingwistyki. Ale będziesz musiał przeczytać kilka grubych podręczników na temat akcentów i wymowy, aby zrobić postępy z tym problemem. Powodzenia!

+0

+1. Wybieram podejście "czytnik opowieści", a Twoja odpowiedź zdecydowanie dostarcza dobrych wskazówek. Czy myślisz, że możesz podać "mapę drogową"? Coś w stylu pseudokodu? – Jon

+1

Bóg nie. To nie jest żaden mały projekt. – DanielOfTaebl

+0

IPA jest nieprecyzyjny do tego celu; ma być alfabetem * fonemicznym * (pomimo swojej nazwy). –