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
-
Otwórz projekt
smart-timer
na swoim Raspberry Pi. -
Usuń funkcję
play_audio
. Nie jest już potrzebna, ponieważ nie chcesz, aby inteligentny timer powtarzał to, co powiedziałeś. -
Dodaj następujący import na początku pliku
app.py
:import requests
-
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ładen-GB
dla angielskiego lubzn-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. -
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.
-
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):
-
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. -
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 toSuccess
, funkcja zwraca tekst, w przeciwnym razie zwraca pusty ciąg znaków. -
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)
-
Na koniec zamień wywołanie
play_audio
w pętliwhile True
na wywołanie funkcjiconvert_speech_to_text
, przekazując tekst do funkcjiprocess_text
:text = convert_speech_to_text(buffer) process_text(text)
-
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.