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

6.1 KiB

Przekształcanie mowy na tekst - Raspberry Pi

W tej części lekcji napiszesz kod, który przekształci mowę z nagranego dźwięku na tekst, korzystając z usługi rozpoznawania mowy.

Wysyłanie dźwięku do usługi rozpoznawania mowy

Dźwięk można wysłać do usługi rozpoznawania mowy za pomocą interfejsu REST API. Aby korzystać z tej usługi, najpierw musisz uzyskać token dostępu, a następnie użyć go do korzystania z REST API. Tokeny dostępu wygasają po 10 minutach, więc Twój kod powinien regularnie je odświeżać, aby zawsze były aktualne.

Zadanie - uzyskanie tokenu dostępu

  1. Otwórz projekt smart-timer na swoim Raspberry Pi.

  2. Usuń funkcję play_audio. Nie jest już potrzebna, ponieważ nie chcesz, aby inteligentny timer powtarzał to, co powiedziałeś.

  3. Dodaj następujący import na początku pliku app.py:

    import requests
    
  4. Dodaj poniższy kod powyżej pętli while True, aby zadeklarować ustawienia dla usługi rozpoznawania mowy:

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

    Zamień <key> na klucz API dla Twojego zasobu usługi rozpoznawania mowy. Zamień <location> na lokalizację, którą wybrałeś podczas tworzenia zasobu usługi rozpoznawania mowy.

    Zamień <language> na nazwę lokalizacji języka, w którym będziesz mówić, na przykład en-GB dla angielskiego lub zn-HK dla kantońskiego. Listę obsługiwanych języków i ich nazw lokalizacji znajdziesz w dokumentacji wsparcia językowego i głosowego na stronie Microsoft Docs.

  5. Poniżej tego kodu dodaj następującą funkcję, aby uzyskać token dostępu:

    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)
    

    Funkcja ta wywołuje punkt końcowy wydawania tokenów, przekazując klucz API jako nagłówek. Wywołanie to zwraca token dostępu, który można wykorzystać do wywoływania usług rozpoznawania mowy.

  6. Poniżej tego kodu zadeklaruj funkcję, która przekształci mowę z nagranego dźwięku na tekst za pomocą REST API:

    def convert_speech_to_text(buffer):
    
  7. Wewnątrz tej funkcji skonfiguruj URL REST API i nagłówki:

    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
    }
    

    Funkcja ta tworzy URL, używając lokalizacji zasobu usługi rozpoznawania mowy. Następnie wypełnia nagłówki tokenem dostępu z funkcji get_access_token, a także częstotliwością próbkowania używaną do nagrywania dźwięku. Na końcu definiuje parametry przekazywane w URL, zawierające język nagranego dźwięku.

  8. Poniżej tego kodu dodaj następujący kod, aby wywołać REST API i uzyskać tekst:

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

    Funkcja ta wywołuje URL i dekoduje wartość JSON, która jest zwracana w odpowiedzi. Wartość RecognitionStatus w odpowiedzi wskazuje, czy udało się poprawnie przekształcić mowę na tekst. Jeśli wartość ta to Success, funkcja zwraca tekst, w przeciwnym razie zwraca pusty ciąg znaków.

  9. Powyżej pętli while True: zdefiniuj funkcję, która przetworzy tekst zwrócony przez usługę rozpoznawania mowy. Na razie funkcja ta po prostu wypisze tekst w konsoli.

    def process_text(text):
        print(text)
    
  10. Na koniec zamień wywołanie play_audio w pętli while True na wywołanie funkcji convert_speech_to_text, przekazując tekst do funkcji process_text:

    text = convert_speech_to_text(buffer)
    process_text(text)
    
  11. Uruchom kod. Naciśnij przycisk i mów do mikrofonu. Zwolnij przycisk, gdy skończysz, a dźwięk zostanie przekształcony na tekst i wypisany w konsoli.

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

    Wypróbuj różne rodzaje zdań, w tym zdania, w których słowa brzmią podobnie, ale mają różne znaczenia. Na przykład, jeśli mówisz po angielsku, powiedz „I want to buy two bananas and an apple too” i zauważ, jak usługa użyje odpowiednich form „to”, „two” i „too” na podstawie kontekstu, a nie tylko ich brzmienia.

💁 Kod ten znajdziesz w folderze code-speech-to-text/pi.

😀 Twój program przekształcający mowę na tekst zakończył się sukcesem!

Zastrzeżenie:
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI Co-op Translator. Chociaż dokładamy wszelkich starań, aby zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.