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 में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, बिलिंग से बचने के लिए संसाधनों को बंद करें. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

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

Cloud Shell चालू करें

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

3c1dabeca90e44e5.png

अगर आपने 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. Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud के लिए कमांड को आपके प्रोजेक्ट के बारे में जानकारी है:
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

Cloud Shell से अपना Google Cloud प्रोजेक्ट मिटाने के लिए:

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

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

लाइसेंस

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