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/da/6-consumer/lessons/1-speech-recognition/pi-speech-to-text.md

5.8 KiB

Tale til tekst - Raspberry Pi

I denne del af lektionen skal du skrive kode for at konvertere tale i den optagede lyd til tekst ved hjælp af tale-tjenesten.

Send lyden til tale-tjenesten

Lyden kan sendes til tale-tjenesten ved hjælp af REST API'et. For at bruge tale-tjenesten skal du først anmode om en adgangstoken og derefter bruge denne token til at få adgang til REST API'et. Disse adgangstokens udløber efter 10 minutter, så din kode skal regelmæssigt anmode om dem for at sikre, at de altid er opdaterede.

Opgave - få en adgangstoken

  1. Åbn smart-timer-projektet på din Pi.

  2. Fjern funktionen play_audio. Denne er ikke længere nødvendig, da du ikke ønsker, at en smart timer gentager, hvad du sagde.

  3. Tilføj følgende import øverst i filen app.py:

    import requests
    
  4. Tilføj følgende kode over while True-løkken for at erklære nogle indstillinger for tale-tjenesten:

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

    Erstat <key> med API-nøglen til din tale-tjeneste-ressource. Erstat <location> med den placering, du brugte, da du oprettede tale-tjeneste-ressourcen.

    Erstat <language> med lokalitetsnavnet for det sprog, du vil tale på, for eksempel en-GB for engelsk eller zn-HK for kantonesisk. Du kan finde en liste over de understøttede sprog og deres lokalitetsnavne i dokumentationen om sprog- og stemmestøtte på Microsoft Docs.

  5. Tilføj nedenunder følgende funktion for at få en adgangstoken:

    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 funktion kalder et token-udstedelses-endpoint og sender API-nøglen som en header. Kaldet returnerer en adgangstoken, der kan bruges til at kalde tale-tjenesterne.

  6. Tilføj nedenunder en funktion til at konvertere tale i den optagede lyd til tekst ved hjælp af REST API'et:

    def convert_speech_to_text(buffer):
    
  7. Inde i denne funktion skal du opsætte REST API URL'en og headers:

    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 hjælp af placeringen af tale-tjeneste-ressourcen. Derefter udfyldes headers med adgangstoken fra funktionen get_access_token samt samplingsfrekvensen, der blev brugt til at optage lyden. Endelig defineres nogle parametre, der skal sendes med URL'en, og som indeholder sproget i lyden.

  8. Tilføj nedenunder følgende kode for at kalde REST API'et og få teksten tilbage:

    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 ''
    

    Dette kalder URL'en og dekoder JSON-værdien, der kommer i svaret. Værdien RecognitionStatus i svaret angiver, om kaldet kunne udtrække tale til tekst med succes, og hvis denne er Success, returneres teksten fra funktionen, ellers returneres en tom streng.

  9. Over while True:-løkken skal du definere en funktion til at behandle teksten, der returneres fra tale-til-tekst-tjenesten. Denne funktion vil blot udskrive teksten til konsollen for nu.

    def process_text(text):
        print(text)
    
  10. Erstat til sidst kaldet til play_audio i while True-løkken med et kald til funktionen convert_speech_to_text, og send teksten til funktionen process_text:

    text = convert_speech_to_text(buffer)
    process_text(text)
    
  11. Kør koden. Tryk på knappen og tal ind i mikrofonen. Slip knappen, når du er færdig, og lyden vil blive konverteret til tekst og udskrevet til konsollen.

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

    Prøv forskellige typer sætninger samt sætninger, hvor ord lyder ens, men har forskellige betydninger. For eksempel, hvis du taler engelsk, kan du sige "I want to buy two bananas and an apple too" og bemærke, hvordan den bruger den korrekte "to", "two" og "too" baseret på konteksten af ordet, ikke kun dets lyd.

💁 Du kan finde denne kode i code-speech-to-text/pi-mappen.

😀 Dit tale-til-tekst-program var en succes!


Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.