Søg efter et optimalt talegenkendelsessystem med lukket kildekode, men med åbne API'er til integration. Google åbner adgang til Cloud Speech API, den underliggende talegenkendelsesteknologi for Google Assistant

  • Stjerne,
  • Google API,
  • Yandex API
  • Valg af en talegenkendelses-API

    Jeg overvejede kun, at API-muligheden ikke var nødvendig, fordi de krævede ressourcer, genkendelsesdata er ikke kritiske for virksomheden, og at bruge dem er meget mere kompliceret og kræver flere mandetimer.

    Den første var Yandex SpeechKit Cloud. Jeg kunne straks godt lide den på grund af dens brugervenlighed:

    Curl -X POST -H "Content-Type: audio/x-wav" --data-binary "@speech.wav" "https://asr.yandex.net/asr_xml?uuid=<идентификатор пользователя>&nøgle= &topic=queries"
    Prispolitik: 400 rubler pr. 1000 anmodninger. Den første måned er gratis. Men efter det var der kun skuffelser:

    Ved fremsendelse af et stort forslag blev der modtaget et svar på 2-3 ord
    - Disse ord blev genkendt i en mærkelig rækkefølge
    - Forsøg på at ændre emnet gav ikke positive resultater

    Måske skyldtes det den gennemsnitlige optagekvalitet, vi testede alt gennem stemmegateways og gamle Panasonic-telefoner. For nu planlægger jeg at bruge det i fremtiden til at bygge IVR.

    Den næste var en tjeneste fra Google. Internettet er fyldt med artikler, der foreslår brug af API for Chromium-udviklere. Nu kan nøglerne til denne API ikke fås så let. Derfor vil vi bruge en kommerciel platform.

    Prispolitik - 0-60 minutter om måneden gratis. Dernæst $0,006 pr. 15 sekunders tale. Hver anmodning afrundes til et multiplum af 15. De første to måneder er gratis, et kreditkort er påkrævet for at oprette et projekt. API-brugstilfældene i den underliggende dokumentation er varierede. Vi vil bruge et Python-script:

    Script fra dokumentation

    """Google Cloud Speech API-eksempelapplikation, der bruger REST API til batchbehandling.""" import argparse import base64 import json fra googleapiclient import discovery import httplib2 fra oauth2client.client import GoogleCredentials DISCOVERY_URL = ("https://(api). googleapis.com/$discovery/rest?" "version=(apiVersion)") def get_speech_service(): credentials = GoogleCredentials.get_application_default().create_scoped(["https://www.googleapis.com/auth/cloud-platform) "]) http = httplib2.Http() credentials.authorize(http) returner discovery.build("tale", "v1beta1", http=http, discoveryServiceUrl=DISCOVERY_URL) def main(tale_fil): """Transkriber den givne lyd fil. Args: speech_file: navnet på lydfilen med open(speech_file, "rb") som tale: speech_content = base64.b64encode(speech.read()) service = get_speech_service() service_request = service.speech. ().syncrecognize(body=( "config": ( "encoding": "LINEAR16", # rå 16-bit signerede LE samples "sampleRate": 16000, # 16 khz "languageCode": "en-US", # a BCP-47 language tag ), "audio": ( "content": speech_content.decode("UTF-8") ) )) response = service_request.execute() print(json.dumps(response)) if __name__ == " __main__": parser = argparse.ArgumentParser() parser.add_argument("speech_file", help="Fuld sti til lydfil, der skal genkendes") args = parser.parse_args() main(args.speech_file)

    Forbereder til at bruge Google Cloud Speech API

    Vi skal registrere projektet og oprette en servicekontonøgle til godkendelse. Her er linket for at få prøveversionen, du skal have en Google-konto. Efter registreringen skal du aktivere API'en og oprette en autorisationsnøgle. Så skal du kopiere nøglen til serveren.

    Lad os gå videre til at opsætte selve serveren, vi skal bruge:

    Python
    - python-pip
    - python google api klient

    Sudo apt-get install -y python python-pip pip install --opgrader google-api-python-client
    Nu skal vi eksportere to miljøvariabler, for succesfuldt arbejde med api. Den første er stien til servicenøglen, den anden er navnet på dit projekt.

    Eksporter GOOGLE_APPLICATION_CREDENTIALS=/sti/to/service_account_file.json eksport GCLOUD_PROJECT=dit-projekt-id
    Lad os downloade testlydfilen og prøve at køre scriptet:

    Wget https://cloud.google.com/speech/docs/samples/audio.raw python voice.py audio.raw ("resultater": [("alternativer": [("tillid": 0.98267895, "transcript": "hvor gammel er Brooklyn Bridge")])])
    Store! Den første test er vellykket. Lad os nu ændre tekstgenkendelsessproget i scriptet og prøve at genkende det:

    Nano voice.py service_request = service.speech().syncrecognize(body=( "config": ( "encoding": "LINEAR16", # rå 16-bit signerede LE samples "sampleRate": 16000, # 16 khz "languageCode" : "ru-RU", # et BCP-47 sprogmærke
    Vi har brug for en .raw lydfil. Vi bruger sox til dette

    Apt-get install -y sox sox test.wav -r 16000 -b 16 -c 1 test.raw python voice.py test.raw ("results": [("alternativer": [("confidence": 0.96161985, " transskription": "\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435 \u0412\u0430\u04430\u04430\u04441 435\u0442\u0441\ u0442 \u0432\u0443\u0435\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f")])])
    Google returnerer svaret til os i Unicode. Men vi vil gerne se normale bogstaver. Lad os ændre vores voice.py lidt:

    Print(json.dumps(respons))
    Vi vil bruge

    S = simplejson.dumps(("var": respons), sure_ascii=False) print s
    Lad os tilføje import simplejson. Det endelige manuskript er under snittet:

    Voice.py

    """Google Cloud Speech API-eksempelapplikation, der bruger REST API til batchbehandling.""" import argparse import base64 import json import simplejson fra googleapiclient import discovery import httplib2 fra oauth2client.client import GoogleCredentials DISCOVERY_URL = ("https://(api) ).googleapis.com/$discovery/rest?" "version=(apiVersion)") def get_speech_service(): credentials = GoogleCredentials.get_application_default().create_scoped(["https://www.googleapis.com/auth/cloud) -platform"]) http = httplib2.Http() credentials.authorize(http) returner discovery.build("tale", "v1beta1", http=http, discoveryServiceUrl=DISCOVERY_URL) def main(tale_fil): """Transkriber givet lydfil. Args: speech_file: navnet på lydfilen """ med open(speech_file, "rb") som tale: speech_content = base64.b64encode(speech.read()) service = get_speech_service() service_request = service. .speech().syncrecognize(body=( "config": ( "encoding": "LINEAR16", # rå 16-bit signerede LE samples "sampleRate": 16000, # 16 khz "languageCode": "en-US", # et BCP-47 sprogtag ), "audio": ( "content": speech_content.decode("UTF-8") ) )) response = service_request.execute() s = simplejson.dumps(("var": svar ), sure_ascii=False) print s if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("speech_file", help="Fuld sti til lydfil, der skal genkendes") args = parser.parse_args( ) main(args.speech_file)


    Men før du kører det, skal du eksportere endnu en miljøvariabel eksporter PYTHONIOENCODING=UTF-8. Uden det havde jeg problemer med stdout, når jeg kaldte scripts ind.

    Eksporter PYTHONIOENCODING=UTF-8 python voice.py test.raw ("var": ("resultater": [("alternativer": [("tillid": 0.96161985, "transcript": "Hej, velkommen til virksomheden") ]) ]))
    Store. Nu kan vi kalde dette script i telefonplanen.

    Asterisk dialplan eksempel

    For at kalde scriptet vil jeg bruge en simpel opkaldsplan:

    Exten => 1234,1,Svar exten => 1234,n,wait(1) exten => 1234,n,Playback(howtomaketicket) exten => 1234,n,Playback(bip) exten => 1234,n,Set( FIL=$(CALLERID(num))--$(EXTEN)--$(STRFTIME($(EPOCH),%d-%m-%Y--%H-%M-%S)).wav) exten => 1234,n,MixMonitor($(FILE),/opt/test/send.sh [e-mailbeskyttet]"$(CDR(src))" "$(CALLERID(navn))" "$(FILE)") exten => 1234,n,wait(28) exten => 1234,n,Afspilning(bip) exten => 1234,n,Afspilning(Tak!) exten => 1234,n,Læg på()
    Jeg bruger mixmonitor til at optage og køre scriptet, når det er færdigt. Du kan bruge record, og dette vil sandsynligvis være bedre. Eksempel send.sh til afsendelse - det antager, at du allerede har mutt konfigureret:

    #!/bin/bash #script til afsendelse af meddelelser # eksporter de nødvendige miljøvariabler# Eksport af Google-licensfil GOOGLE_APPLICATION_CREDENTIALS=/opt/test/project.json # projektnavn eksport GCLOUD_PROJECT=projekt-id # python-kodning eksport PYTHONIOENCODING=UTF-8 #liste over inputvariabler EMAIL=$1 CALLERIDNUM=$2 CALLERIDLENAME=$4 CALLERIDLENAME=$4 CALLERIDLENAME # omkode lydfil i rå for at give den til Google API sox /var/spool/asterisk/monitor/$FILE -r 16000 -b 16 -c 1 /var/spool/asterisk/monitor/$FILE.raw # assign variabel værdi færdiggjort script til at konvertere lyd til tekst og afskære unødvendigt TEXT=`python /opt/test/voice.py /var/spool/asterisk/monitor/$FILE.raw | sed -e "s/.*transcript"://" -e "s/)])]))//"` # send brevet, inkluder den genkendte tekst i bogstavet ekko "ny meddelelse fra nummeret: $ CALLERIDNUM $CALLERIDNAME $ TEXT " | mutt -s "Dette er overskriften på bogstavet" -e "set [e-mailbeskyttet] realname="Jeg sender advarsler"" -a "/var/spool/asterisk/monitor/$FILE" -- $EMAIL

    Konklusion

    Dermed løste vi problemet. Jeg håber, at min erfaring er nyttig for nogen. Jeg vil være glad for at modtage kommentarer (måske er dette den eneste grund til, at det er værd at læse Habr!). I fremtiden planlægger jeg at implementere en IVR med stemmestyringselementer baseret på dette.

    Google Speech API- Google stemmegenkendelsestjeneste.

    Talegenkendelse giver dig mulighed for at oprette automatiske kundeservicesystemer i tilfælde, hvor kontrol vha toneopkald. Som et eksempel kan vi overveje en flybilletbestillingstjeneste, som involverer udvælgelse stort antal byer. Tonemenuen i sådan en tjeneste er ikke praktisk, så stemmekontrol vil være den mest effektive. Dialogen mellem systemet og abonnenten kan se således ud:

    System: Hej. Hvor vil du flyve? Abonnent: Kazan System: Hvor vil du flyve fra? Abonnent: Moskva-systemet: Angiv afrejsedato Abonnent: 10. april

    Et talegenkendelsessystem består typisk af følgende dele:

    • Optagelse af en besked fra en abonnent
    • Stemmegenkendelse og modtagelse af tekstdata fra tjenesten
    • Analysere de modtagne oplysninger og tage de nødvendige handlinger

    Til brug Google Speech API på dit system gør følgende:

    Trin 1. Download og importer scripts til dit system Oktell.

    Download scriptet:(for versioner Oktellældre end 2,10)

    Arkivet indeholder to scripts:

    • Google_Speech_API_main- script til optagelse talebesked, er et eksempel korrekt brug genkendelsestjeneste i hovedscenariet.
    • Google_Speech_API- script til at sende en optagelse til Google-tjeneste og modtagelse af den genkendte besked.

    Efter import af scripts til Oktell, gem dem" Til serveren"

    BEMÆRK: Google Speech API er betalt produkt. I scriptet (webanmodningskomponent GoogleVoice) bruges en prøvenøgle, som kan blokeres på grund af et vist antal anmodninger. Under prøver maksimalt beløb ingen anmodninger fundet. Hvis du vil købe betalt version Google Speech API kontakt Google support.

    Trin 2. I modulet " Administration" - "Eksterne numre"tilføj lokalnummer med type" Lancering af IVR Vælg IVR-scenarie Google_Speech_API_main.

    Her er information fra internettet fra siden vorabota.ru :

    For at begynde at konvertere stemme til tekst skal du bruge en mikrofon (i bærbare computere er den indbygget), en god en er ønskelig internetforbindelse hastighed og browser Google Chrome ikke lavere end version 25. I andre browsere funktionen stemmeopkald tekster virker desværre ikke.

    Start siden for at indtaste tekst med stemmen Chrome browser. I bunden af ​​vinduet skal du vælge det sprog, du planlægger at diktere teksten på. Klik på mikrofonikonet i øverste højre hjørne. Og i pop op-linjen skal du klikke på "tillad"-knappen for at browseren kan bruge mikrofonen.

    Nu kan du langsomt og tydeligt udtale korte sætninger. Når du er færdig med at diktere tekst med stemmen, kan du vælge den ved hjælp af en tastaturgenvej Ctrl+C kopier til udklipsholderen og indsæt derefter i en hvilken som helst editor til behandling. Hvis det ønskes, kan teksten straks sendes pr e-mail.

    Måske, Web Speech API- den enkleste og ret høj kvalitet måde at konvertere din tale til tekst. Da der ikke er behov for at blive distraheret af yderligere manipulationer med tastaturet. Tænd bare mikrofonen og indtal teksten.

    Under alle omstændigheder bliver du nødt til at bruge noget ekstra tekst editor for yderligere rettelse af den dikterede tekst.

    Startet i browseren Google Chrome side http://vorabota.ru/voice/text.html og prøvede stemmetekstinput. Jeg læste sætningen " Web Speech API Stemmeindtastning. Vælg alle. Send e-mail"og modtog" Websphere api stemmeindtastning vælg alle send e-mail". Andet forsøg: " Klik på knappen Tillad for at slå mikrofonen til» — « Klik på knappen Tillad for at aktivere mikrofonen«.

    En sammenligning af den oprindelige sætning og resultatet viser, at: a) den russiske sætning er konverteret til russisk tekst med tilstrækkelig kvalitet; b) den engelske sætning konverteres til engelsk tekst med fejl, der er lette at rette; c) obligatorisk tekstkorrektion er påkrævet for at rette fejl og placere tegnsætningstegn, og store bogstaver; d) forskellen mellem denne implementering Stemmeskrivning fra andre tilgængelige på internettet, i ekstrem enkelhed: der er intet overflødigt i det, hvilket gør det nemt at lære og bruge.

    Min konklusion er denne: det giver mening at implementere på denne måde Stemmetekstinput på din hjemmeside for at gøre det nemmere at indtaste tekst på hjemmesidens sider.

    Du skal blot indsætte den nødvendige kode på den relevante side på webstedet.

    Oprettet separat side, kun beregnet til Stemmeinput tekst, og begyndte at fejlfinde det.

    Her er sidekoden Diktér teksten:

    Fejlfinder kode...

    Du kan bruge den givne kode på din hjemmeside og transformere den, som du finder passende.

    Jeg opfordrer alle til at sige fra

    I dag er det simpelthen umuligt at klare sig uden en computer. moderne verden. Du er ikke forpligtet til at være en Photoshop-mester eller en professionel videoredigering (medmindre det er arbejdsrelateret, selvfølgelig). Men at kunne skrive noget tekst er minimum påkrævet.

    nr. 2. Web Speech API


    Web Speech API-onlineprogrammet er helt identisk i funktionalitet med de tidligere.

    Denne tjeneste, ligesom dem, der er anført ovenfor, blev også oprettet af Google.

    Hjemmeside ser sådan ud:


    I enkel grænseflade Det er umiddelbart indlysende, at for at begynde at optage skal du vælge et sprog og derefter trykke på mikrofonen.

    Når du har klikket på ikonet til højre, vil systemet helt sikkert fremsætte en anmodning om adgang.


    Når du har givet grønt lys, kan du straks begynde arbejdet. Skriv tekst med stemmen, og dens trykte version vises i vinduet.

    Når du er færdig med arbejdet, kan du kopiere teksten, hvor end du har brug for den (igen, ctrl+C, ctrl+V).

    nr. 3.

    Talktyper Intet mindre– dette er Talktyper.

    For at komme i gang skal du gå til hjemmesiden: https://talktyper.com/ru/index.html.


    For at komme i gang skal du blot klikke på mikrofonikonet til højre.

    I modsætning til dem, der er beskrevet ovenfor, kan denne skrivemaskine åbnes ved hjælp af enhver browser. Selvom webstedet blev oprettet i USA, genkender applikationen let de mest populære sprog i verden, inklusive russisk.

    Talktyper er multifunktionel: den skriver ikke kun tekst, men sætter også tegnsætningstegn og retter fejl på egen hånd. Hvis systemet ikke kan genkende et ord, du læser som korrekt, vil det helt sikkert blive fremhævet.

    Derudover har Talktyper en oversættelsesfunktion, samt voiceover.

    Bemærk! Når du er færdig med stemmeskrivning, skal du sørge for at klikke på pilen, så det indtastede dokument overføres til et andet felt. Herefter kan den sendes på mail eller kopieres til den ønskede fil.

    Mulige problemer ved arbejde med stemmeopkaldsprogrammer

    Når du begynder at bruge disse programmer, vil du helt sikkert undre dig over, hvordan computeren genkender vores stemme og derefter oversætter den til levende tekst.

    Enhedens talegenkendelsesskema ser sådan ud:

    Hele processen kan opdeles i 3 hovedfaser:

      Akustisk genkender.

      Det er vigtigt at tale tydeligt, højt, og mikrofonen skal sende din stemme uden afbrydelser.

      Sproglig bearbejdning.

      Jo flere ord der er i programmets ordbog, jo bedre er kvaliteten af ​​den maskinskrevne tekst. Det vil sige, at alt, hvad du siger, bliver genkendt og overført til tekstform uden forvrængning.

      Genkendt stavetekst.

      Program i automatisk tilstand viser stavning grafisk version dikteret tale, afhængighed af pauser, ords klarhed, lexemes fundet i ordbogen osv.

    Når du arbejder med maskinskrivere, opstår der oftest 2 problemer:

    1. Den akustiske genkender "fanger" din tale med mellemrum.
    2. Der er ikke nok ord i systemets ordbog til at genkende alt, hvad du sagde.

    For at løse det første problem skal du tale klart og højt. Men for det andet problem er der praktisk talt ingen løsning, men i det mindste, gratis.

    Frit distribuerede versioner af talegenkendelsesprogrammer har et meget begrænset ordforråd.

    For at give et program et omfattende ordforråd skal udviklere investere mange penge, hvilket er grunden til, at mange genkendere demonstrerer lavt niveau oversættelse af tale til tekst.

    Er kommet længst i denne sag Google virksomhed, fordi har midler nok til investeringer. Dette firma har blandt andet skabt den største onlineordbog, der hjælper med at genkende stemmer og oversætte den til en grafisk version.

    Se detaljeret vejledning i denne video:

    1. Når du holder en tale, skal rummet være stille. Naturens lyde, musikken og et barns gråd opfattes af systemet som støj. På grund af dette vil teksten blive skrevet med store fejl.
    2. Tal ikke, hvis du spiser noget. Dette vil ikke kun påvirke kvaliteten af ​​sættet, men det er også livstruende.
    3. Før du starter, skal du vælge den korrekte lydstyrke på din stemme og også forstå, hvilken følsomhed din mikrofon har.

      For at gøre dette, prøv at skrive et par sætninger ned i en velkendt tone. Se mikrofonindstillingerne, hvis der er afbrydelser i optagelsen.

    4. Hold korte pauser mellem ordene.
    5. Undgå lange sætninger.

    Nogen vil sige det stemmeopkaldsprogram er en vidunderlig assistent, der frigør deres hænder og gør deres liv lettere generelt. Andre vil beslutte, at "spillet ikke er stearinlyset værd." Derfor skal du selv tage stilling til, om du vil bruge dem.

    Og du ved allerede, hvilke tjenester du skal vælge imellem...

    Siden den dag har uafhængige udviklere haft adgang til Cloud Speech API, den talegenkendelsesteknologi, som Googles produkter er baseret på. Det opdaterede produkt er nu tilgængeligt på Google Cloud.

    En åben betaversion af Cloud Speech blev udgivet sidste sommer. Denne teknologi, med en simpel API, giver udviklere mulighed for at konvertere lyd til tekst. Modeller neurale netværk kan genkende mere end 80 sprog og dialekter, og den færdige transskription vises umiddelbart efter oplæsning af teksten.

    API'et er bygget på teknologi, der giver talegenkendelsesfunktionalitet i Google Assistant, Search og Now, men den nye version har foretaget ændringer for at tilpasse teknologien til Cloud-brugernes behov.

    Hvad er anderledes ved den nye version af Cloud Speech API?

    Tak for feedback fra udviklere Google-teamet var i stand til at forbedre nøjagtigheden af ​​transskription af lange lydoptagelser og fremskynde databehandlingen med 3 gange sammenlignet med den originale version. Understøttelse af andre lydformater er også blevet tilføjet, herunder WAV, OPUS og Speex.

    Ifølge statistikker blev denne API tidligere oftest brugt til at administrere applikationer og enheder ved hjælp af stemmesøgning, talekommandoer og stemmemenu. Men Cloud Speech kan bruges i en lang række IoT-enheder, herunder biler, tv'er, højttalere og selvfølgelig telefoner og pc'er.

    Blandt de almindelige anvendelser af teknologi er det værd at bemærke dets brug i organisationer til at analysere callcentres arbejde, spore kommunikation med kunder og øge salget.