You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/no/6-consumer/lessons/1-speech-recognition/pi-speech-to-text.md

5.8 KiB

Tale til tekst - Raspberry Pi

I denne delen av leksjonen skal du skrive kode for å konvertere tale i det innspilte lydopptaket til tekst ved hjelp av tale-tjenesten.

Send lyden til tale-tjenesten

Lyden kan sendes til tale-tjenesten ved hjelp av REST API. For å bruke tale-tjenesten må du først be om en tilgangstoken, og deretter bruke denne tokenen for å få tilgang til REST API. Disse tilgangstokenene utløper etter 10 minutter, så koden din bør be om dem regelmessig for å sikre at de alltid er oppdaterte.

Oppgave - få en tilgangstoken

  1. Åpne smart-timer-prosjektet på din Pi.

  2. Fjern funksjonen play_audio. Denne er ikke lenger nødvendig siden du ikke ønsker at smart-timeren skal gjenta det du sa.

  3. Legg til følgende import øverst i filen app.py:

    import requests
    
  4. Legg til følgende kode over while True-løkken for å deklarere noen innstillinger for tale-tjenesten:

    speech_api_key = '<key>'
    location = '<location>'
    language = '<language>'
    

    Erstatt <key> med API-nøkkelen for ressursen din i tale-tjenesten. Erstatt <location> med plasseringen du brukte da du opprettet ressursen i tale-tjenesten.

    Erstatt <language> med lokalitetsnavnet for språket du skal snakke på, for eksempel en-GB for engelsk eller zn-HK for kantonesisk. Du finner en liste over støttede språk og deres lokalitetsnavn i dokumentasjonen for språk- og stemmestøtte på Microsoft Docs.

  5. Under dette, legg til følgende funksjon for å få en tilgangstoken:

    def get_access_token():
        headers = {
            'Ocp-Apim-Subscription-Key': speech_api_key
        }
    
        token_endpoint = f'https://{location}.api.cognitive.microsoft.com/sts/v1.0/issuetoken'
        response = requests.post(token_endpoint, headers=headers)
        return str(response.text)
    

    Denne kaller et token-utstedelsesendepunkt og sender API-nøkkelen som en header. Kallet returnerer en tilgangstoken som kan brukes til å kalle tale-tjenestene.

  6. Under dette, deklarer en funksjon for å konvertere tale i det innspilte lydopptaket til tekst ved hjelp av REST API:

    def convert_speech_to_text(buffer):
    
  7. Inne i denne funksjonen, sett opp REST API-URL-en og headere:

    url = f'https://{location}.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1'
    
    headers = {
        'Authorization': 'Bearer ' + get_access_token(),
        'Content-Type': f'audio/wav; codecs=audio/pcm; samplerate={rate}',
        'Accept': 'application/json;text/xml'
    }
    
    params = {
        'language': language
    }
    

    Dette bygger en URL ved å bruke plasseringen til ressursen i tale-tjenesten. Deretter fyller den inn headerne med tilgangstokenen fra funksjonen get_access_token, samt samplingsfrekvensen som ble brukt til å ta opp lyden. Til slutt definerer den noen parametere som skal sendes med URL-en og som inneholder språket i lyden.

  8. Under dette, legg til følgende kode for å kalle REST API og få tilbake teksten:

    response = requests.post(url, headers=headers, params=params, data=buffer)
    response_json = response.json()
    
    if response_json['RecognitionStatus'] == 'Success':
        return response_json['DisplayText']
    else:
        return ''
    

    Denne kaller URL-en og dekoder JSON-verdien som kommer i responsen. Verdien RecognitionStatus i responsen indikerer om kallet klarte å trekke ut tale til tekst vellykket, og hvis denne er Success, returneres teksten fra funksjonen. Ellers returneres en tom streng.

  9. Over while True:-løkken, definer en funksjon for å behandle teksten som returneres fra tale-til-tekst-tjenesten. Denne funksjonen vil bare skrive ut teksten til konsollen foreløpig.

    def process_text(text):
        print(text)
    
  10. Til slutt, erstatt kallet til play_audio i while True-løkken med et kall til funksjonen convert_speech_to_text, og send teksten til funksjonen process_text:

    text = convert_speech_to_text(buffer)
    process_text(text)
    
  11. Kjør koden. Trykk på knappen og snakk inn i mikrofonen. Slipp knappen når du er ferdig, og lyden vil bli konvertert til tekst og skrevet ut i konsollen.

    pi@raspberrypi:~/smart-timer $ python3 app.py 
    Hello world.
    Welcome to IoT for beginners.
    

    Prøv forskjellige typer setninger, samt setninger der ord høres like ut, men har forskjellige betydninger. For eksempel, hvis du snakker engelsk, si "I want to buy two bananas and an apple too", og legg merke til hvordan den bruker riktig "to", "two" og "too" basert på konteksten til ordet, ikke bare lyden.

💁 Du finner denne koden i code-speech-to-text/pi-mappen.

😀 Programmet ditt for tale til tekst var en suksess!


Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.