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

6.1 KiB

Spraak naar tekst - Raspberry Pi

In dit deel van de les schrijf je code om spraak in de opgenomen audio om te zetten naar tekst met behulp van de spraakservice.

Verstuur de audio naar de spraakservice

De audio kan naar de spraakservice worden gestuurd via de REST API. Om de spraakservice te gebruiken, moet je eerst een toegangstoken aanvragen en dat token gebruiken om toegang te krijgen tot de REST API. Deze toegangstokens verlopen na 10 minuten, dus je code moet ze regelmatig aanvragen om ervoor te zorgen dat ze altijd up-to-date zijn.

Taak - verkrijg een toegangstoken

  1. Open het smart-timer-project op je Pi.

  2. Verwijder de functie play_audio. Deze is niet langer nodig, omdat je niet wilt dat een slimme timer herhaalt wat je hebt gezegd.

  3. Voeg de volgende import toe aan de bovenkant van het bestand app.py:

    import requests
    
  4. Voeg de volgende code toe boven de while True-lus om enkele instellingen voor de spraakservice te declareren:

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

    Vervang <key> door de API-sleutel voor je spraakservicebron. Vervang <location> door de locatie die je hebt gebruikt bij het aanmaken van de spraakservicebron.

    Vervang <language> door de locale naam van de taal waarin je zult spreken, bijvoorbeeld en-GB voor Engels, of zn-HK voor Kantonees. Je kunt een lijst met ondersteunde talen en hun locale namen vinden in de Documentatie over taal- en stemondersteuning op Microsoft Docs.

  5. Voeg hieronder de volgende functie toe om een toegangstoken te verkrijgen:

    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)
    

    Deze functie roept een endpoint aan dat tokens uitgeeft, waarbij de API-sleutel als header wordt meegegeven. Deze oproep retourneert een toegangstoken dat kan worden gebruikt om de spraakservices aan te roepen.

  6. Declareer hieronder een functie om spraak in de opgenomen audio om te zetten naar tekst met behulp van de REST API:

    def convert_speech_to_text(buffer):
    
  7. Stel binnen deze functie de REST API-URL en headers in:

    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
    }
    

    Dit bouwt een URL op met behulp van de locatie van de spraakservicebron. Vervolgens worden de headers gevuld met het toegangstoken van de functie get_access_token, evenals de sample rate die is gebruikt om de audio op te nemen. Ten slotte worden enkele parameters gedefinieerd die met de URL worden meegegeven en de taal in de audio bevatten.

  8. Voeg hieronder de volgende code toe om de REST API aan te roepen en de tekst terug te krijgen:

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

    Deze code roept de URL aan en decodeert de JSON-waarde die in de respons wordt meegeleverd. De waarde RecognitionStatus in de respons geeft aan of de oproep succesvol spraak naar tekst heeft kunnen omzetten. Als dit Success is, wordt de tekst geretourneerd door de functie, anders wordt een lege string geretourneerd.

  9. Definieer boven de while True:-lus een functie om de tekst te verwerken die is geretourneerd door de spraak-naar-tekstservice. Deze functie zal de tekst voorlopig alleen naar de console printen.

    def process_text(text):
        print(text)
    
  10. Vervang ten slotte de oproep naar play_audio in de while True-lus door een oproep naar de functie convert_speech_to_text, waarbij de tekst wordt doorgegeven aan de functie process_text:

    text = convert_speech_to_text(buffer)
    process_text(text)
    
  11. Voer de code uit. Druk op de knop en spreek in de microfoon. Laat de knop los wanneer je klaar bent, en de audio wordt omgezet naar tekst en naar de console geprint.

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

    Probeer verschillende soorten zinnen, samen met zinnen waarin woorden hetzelfde klinken maar verschillende betekenissen hebben. Bijvoorbeeld, als je in het Engels spreekt, zeg dan 'I want to buy two bananas and an apple too', en merk op hoe het de juiste to, two en too gebruikt op basis van de context van het woord, niet alleen op basis van de klank.

💁 Je kunt deze code vinden in de code-speech-to-text/pi map.

😀 Je spraak-naar-tekstprogramma was een succes!


Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.