Python के साथ Speech-to-Text API का इस्तेमाल करना

1. खास जानकारी

9e7124a578332fed.png

Speech-to-Text API की मदद से डेवलपर, 125 से ज़्यादा भाषाओं और वैरिएंट में उपलब्ध ऑडियो को टेक्स्ट में बदल सकते हैं. इसके लिए, उन्हें इस्तेमाल में आसान एपीआई में मौजूद पावरफ़ुल न्यूरल नेटवर्क मॉडल लागू करने होंगे.

इस ट्यूटोरियल में, Python के साथ Speech-to-Text API का इस्तेमाल करने पर फ़ोकस किया जाएगा.

आपको क्या सीखने को मिलेगा

  • अपना एनवायरमेंट सेट अप करने का तरीका
  • ऑडियो फ़ाइलों में बोले जा रहे शब्दों को अंग्रेज़ी में टेक्स्ट में बदलने का तरीका
  • शब्दों के टाइमस्टैंप के साथ ऑडियो फ़ाइलों को ट्रांसक्राइब करने का तरीका
  • अलग-अलग भाषाओं में ऑडियो फ़ाइलों को टेक्स्ट में बदलने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट
  • कोई ब्राउज़र, जैसे कि Chrome या Firefox
  • Python का इस्तेमाल करने की जानकारी

सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें

Python के साथ अपने अनुभव को आप क्या रेटिंग देंगे?

शुरुआती सामान्य एडवांस

Google Cloud की सेवाओं को इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती सामान्य एडवांस

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग को अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ताओं को, 300 डॉलर का क्रेडिट मिलेगा. वे इसे मुफ़्त में आज़मा सकते हैं.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें 853e55310c205094.png पर क्लिक करें.

3c1dabeca90e44e5.png

अगर आपने Cloud Shell को पहली बार शुरू किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर आपको इंटरमीडिएट स्क्रीन दिखती है, तो जारी रखें पर क्लिक करें.

9c92662c6a846a5c.png

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

9f0e51b578fecce5.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है, जो हमेशा बनी रहती है. साथ ही, यह Google Cloud में काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम ब्राउज़र से किया जा सकता है.

Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि हो गई है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट कर दिया गया है.

  1. पुष्टि करें कि आपने Cloud Shell में पुष्टि कर ली है. इसके लिए, यह कमांड चलाएं:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. एनवायरमेंट सेटअप करना

Speech-to-Text API का इस्तेमाल शुरू करने से पहले, Cloud Shell में यह निर्देश चलाकर एपीआई को चालू करें:

gcloud services enable speech.googleapis.com

आपको कुछ ऐसा दिखेगा:

Operation "operations/..." finished successfully.

अब Speech-to-Text API का इस्तेमाल किया जा सकता है!

अपनी होम डायरेक्ट्री पर जाएं:

cd ~

डिपेंडेंसी को अलग करने के लिए, Python का वर्चुअल एनवायरमेंट बनाएं:

virtualenv venv-speech

वर्चुअल एनवायरमेंट चालू करें:

source venv-speech/bin/activate

IPython और Speech-to-Text API क्लाइंट लाइब्रेरी इंस्टॉल करें:

pip install ipython google-cloud-speech

आपको कुछ ऐसा दिखेगा:

...
Installing collected packages: ..., ipython, google-cloud-speech
Successfully installed ... google-cloud-speech-2.25.1 ...

अब, Speech-to-Text API की क्लाइंट लाइब्रेरी का इस्तेमाल किया जा सकता है!

अगले चरणों में, आपको IPython नाम के इंटरैक्टिव Python इंटरप्रेटर का इस्तेमाल करना होगा. इसे आपने पिछले चरण में इंस्टॉल किया था. Cloud Shell में ipython चलाकर सेशन शुरू करें:

ipython

आपको कुछ ऐसा दिखेगा:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

अब आप पहला अनुरोध कर सकते हैं...

4. ऑडियो फ़ाइलों में बोले जा रहे शब्दों को टेक्स्ट में बदलना

इस सेक्शन में, आपको अंग्रेज़ी की किसी ऑडियो फ़ाइल को ट्रांसक्राइब करना होगा.

नीचे दिए गए कोड को अपने IPython सेशन में कॉपी करें:

from google.cloud import speech


def speech_to_text(
    config: speech.RecognitionConfig,
    audio: speech.RecognitionAudio,
) -> speech.RecognizeResponse:
    client = speech.SpeechClient()

    # Synchronous speech recognition request
    response = client.recognize(config=config, audio=audio)

    return response


def print_response(response: speech.RecognizeResponse):
    for result in response.results:
        print_result(result)


def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    

कोड को ध्यान से देखें और जानें कि यह ऑडियो फ़ाइल को ट्रांसक्राइब करने के लिए, recognize क्लाइंट लाइब्रेरी के तरीके का इस्तेमाल कैसे करता है*.* config पैरामीटर से पता चलता है कि अनुरोध को कैसे प्रोसेस करना है. वहीं, audio पैरामीटर से पता चलता है कि किस ऑडियो डेटा को पहचाना जाना है.

अनुरोध भेजें:

config = speech.RecognitionConfig(
    language_code="en",
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

आपको यह आउटपुट दिखेगा:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    how old is the Brooklyn Bridge
confidence:    98%

बिराम चिह्न अपने-आप लगाने की सुविधा चालू करने के लिए, कॉन्फ़िगरेशन अपडेट करें और नया अनुरोध भेजें:

config.enable_automatic_punctuation = True

response = speech_to_text(config, audio)
print_response(response)

आपको यह आउटपुट दिखेगा:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%

खास जानकारी

इस चरण में, अलग-अलग पैरामीटर का इस्तेमाल करके, किसी ऑडियो फ़ाइल को अंग्रेज़ी में ट्रांसक्राइब किया गया और नतीजे को प्रिंट किया गया. ऑडियो फ़ाइलों को टेक्स्ट में बदलने के बारे में ज़्यादा जानें.

5. शब्दों के टाइमस्टैंप पाना

बोले गए शब्दों को टेक्स्ट में बदलने की सुविधा, ट्रांसक्रिप्ट किए गए ऑडियो के लिए टाइम ऑफ़सेट (टाइमस्टैंप) का पता लगा सकती है. टाइम ऑफ़सेट से, दिए गए ऑडियो में बोले गए हर शब्द की शुरुआत और खत्म होने का समय पता चलता है. टाइम ऑफ़सेट वैल्यू से पता चलता है कि ऑडियो शुरू होने के बाद से कितना समय बीत चुका है. यह वैल्यू, 100 मिलीसेकंड के हिसाब से बढ़ती है.

शब्दों के टाइमस्टैंप के साथ किसी ऑडियो फ़ाइल को ट्रांसक्राइब करने के लिए, अपने कोड को अपडेट करें. इसके लिए, IPython सेशन में यह कोड कॉपी करें:

def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    print("-" * 80)
    for word in best_alternative.words:
        start_s = word.start_time.total_seconds()
        end_s = word.end_time.total_seconds()
        print(f"{start_s:>7.3f} | {end_s:>7.3f} | {word.word}")
        

कोड को ध्यान से देखें और जानें कि यह शब्दों के टाइमस्टैंप* के साथ ऑडियो फ़ाइल को कैसे ट्रांसक्राइब करता है*.* enable_word_time_offsets पैरामीटर, एपीआई को हर शब्द के लिए टाइम ऑफ़सेट दिखाने का निर्देश देता है. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें.

अनुरोध भेजें:

config = speech.RecognitionConfig(
    language_code="en",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

आपको यह आउटपुट दिखेगा:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%
--------------------------------------------------------------------------------
  0.000 |   0.300 | How
  0.300 |   0.600 | old
  0.600 |   0.800 | is
  0.800 |   0.900 | the
  0.900 |   1.100 | Brooklyn
  1.100 |   1.400 | Bridge?

खास जानकारी

इस चरण में, आपने अंग्रेज़ी में मौजूद किसी ऑडियो फ़ाइल को शब्दों के टाइमस्टैंप के साथ ट्रांसक्राइब किया और नतीजे को प्रिंट किया. शब्दों के टाइमस्टैंप पाने के बारे में ज़्यादा जानें.

6. अलग-अलग भाषाओं में बोले गए शब्दों को लेख में बदलना

Speech-to-Text API, 125 से ज़्यादा भाषाओं और उनके वैरिएंट को पहचानता है! इस सुविधा के लिए उपलब्ध भाषाओं की सूची यहां दी गई है.

इस सेक्शन में, आपको फ़्रेंच भाषा की ऑडियो फ़ाइल को ट्रांसक्राइब करना होगा.

फ़्रेंच ऑडियो फ़ाइल को ट्रांसक्राइब करने के लिए, अपने कोड को अपडेट करें. इसके लिए, IPython सेशन में यह कोड कॉपी करें:

config = speech.RecognitionConfig(
    language_code="fr-FR",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/corbeau_renard.flac",
)

response = speech_to_text(config, audio)
print_response(response)

आपको यह आउटपुट दिखेगा:

--------------------------------------------------------------------------------
language_code: fr-fr
transcript:    Maître corbeau sur un arbre perché Tenait dans son bec un fromage maître Renard par l'odeur alléché lui tint à peu près ce langage et bonjour monsieur du corbeau.
confidence:    94%
--------------------------------------------------------------------------------
  0.000 |   0.700 | Maître
  0.700 |   1.100 | corbeau
  1.100 |   1.300 | sur
  1.300 |   1.600 | un
  1.600 |   1.700 | arbre
  1.700 |   2.000 | perché
  2.000 |   3.000 | Tenait
  3.000 |   3.000 | dans
  3.000 |   3.200 | son
  3.200 |   3.500 | bec
  3.500 |   3.700 | un
  3.700 |   3.800 | fromage
...
 10.800 |  11.800 | monsieur
 11.800 |  11.900 | du
 11.900 |  12.100 | corbeau.

खास जानकारी

इस चरण में, आपने फ़्रेंच भाषा में मौजूद ऑडियो फ़ाइल को ट्रांसक्राइब किया और नतीजे को प्रिंट किया. Merchant Center में इस्तेमाल की जा सकने वाली भाषाओं के बारे में ज़्यादा जानें.

7. बधाई हो!

9e7124a578332fed.png

आपने Python का इस्तेमाल करके, Speech-to-Text API को ऑडियो फ़ाइलों पर अलग-अलग तरह की ट्रांसक्रिप्शन करने के लिए इस्तेमाल करने का तरीका सीखा!

व्यवस्थित करें

Cloud Shell से, डेवलपमेंट एनवायरमेंट को क्लीन अप करने के लिए:

  • अगर आप अब भी IPython सेशन में हैं, तो शेल पर वापस जाएं: exit
  • Python वर्चुअल एनवायरमेंट का इस्तेमाल बंद करें: deactivate
  • अपना वर्चुअल एनवायरमेंट फ़ोल्डर मिटाएं: cd ~ ; rm -rf ./venv-speech

Google Cloud प्रोजेक्ट मिटाने के लिए, Cloud Shell में जाकर यह तरीका अपनाएं:

  • अपना मौजूदा प्रोजेक्ट आईडी पाएं: PROJECT_ID=$(gcloud config get-value core/project)
  • पक्का करें कि आपको यही प्रोजेक्ट मिटाना है: echo $PROJECT_ID
  • प्रोजेक्ट मिटाएं: gcloud projects delete $PROJECT_ID

ज़्यादा जानें

लाइसेंस

इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.