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

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

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

इस कोडलैब में, Node.js के साथ Speech-to-Text API का इस्तेमाल करने पर फ़ोकस किया जाएगा. आपको यह पता चलेगा कि ट्रांसक्रिप्शन के लिए, Cloud Speech-to-Text API को अंग्रेज़ी और अन्य भाषाओं में ऑडियो फ़ाइल कैसे भेजी जाती है.

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

  • बोली को लिखाई में बदलने वाले एपीआई को चालू करने का तरीका
  • एपीआई अनुरोधों की पुष्टि करने का तरीका
  • Node.js के लिए Google Cloud क्लाइंट लाइब्रेरी इंस्टॉल करने का तरीका
  • ऑडियो फ़ाइलों में बोले जा रहे शब्दों को अंग्रेज़ी में टेक्स्ट में बदलने का तरीका
  • शब्दों के टाइमस्टैंप के साथ ऑडियो फ़ाइलों को ट्रांसक्राइब करने का तरीका
  • अलग-अलग भाषाओं में ऑडियो फ़ाइलों को टेक्स्ट में बदलने का तरीका

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

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

सर्वे

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

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

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

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

Google Cloud Platform की सेवाओं को इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?

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

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

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

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

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें बताया गया है कि संसाधनों को कैसे बंद किया जाए, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ता, मुफ़्त में आज़माने के लिए 300 डॉलर के प्रोग्राम में शामिल हो सकते हैं.

Cloud Shell शुरू करें

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

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ पर क्लिक करें.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

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

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

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

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

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

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`
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

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

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. Speech-to-Text API चालू करना

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

gcloud services enable speech.googleapis.com

4. एपीआई अनुरोधों की पुष्टि करना

Speech-to-Text API से अनुरोध करने के लिए, आपको सेवा खाता इस्तेमाल करना होगा. सेवा खाता आपके प्रोजेक्ट से जुड़ा होता है. इसका इस्तेमाल Google Client Node.js लाइब्रेरी, Speech-to-Text API के अनुरोध करने के लिए करती है. किसी अन्य उपयोगकर्ता खाते की तरह, सेवा खाते को भी एक ईमेल पते से दिखाया जाता है. इस सेक्शन में, Cloud SDK का इस्तेमाल करके एक सेवा खाता बनाया जाएगा. इसके बाद, ऐसे क्रेडेंशियल बनाए जाएंगे जिनकी ज़रूरत आपको सेवा खाते के तौर पर पुष्टि करने के लिए होगी.

सबसे पहले, अपने PROJECT_ID के साथ एक एनवायरमेंट वैरिएबल सेट करें. इसका इस्तेमाल इस कोडलैब में किया जाएगा. अगर Cloud Shell का इस्तेमाल किया जा रहा है, तो यह आपके लिए सेट किया जाएगा:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

इसके बाद, Speech-to-Text API को ऐक्सेस करने के लिए, नया सेवा खाता बनाएं. इसके लिए, इनका इस्तेमाल करें:

gcloud iam service-accounts create my-speech-to-text-sa \
  --display-name "my speech-to-text codelab service account"

इसके बाद, ऐसे क्रेडेंशियल बनाएं जिनका इस्तेमाल आपका Node.js कोड, नए सेवा खाते के तौर पर लॉगिन करने के लिए करेगा. इन क्रेडेंशियल को बनाएं और इन्हें JSON फ़ाइल ~/key.json के तौर पर सेव करें. इसके लिए, यह निर्देश इस्तेमाल करें:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account  my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

आखिर में, GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल सेट करें. इसका इस्तेमाल Speech-to-Text API की Node.js लाइब्रेरी करती है. इसके बारे में अगले चरण में बताया गया है. इससे आपकी क्रेडेंशियल मिलती हैं. एनवायरमेंट वैरिएबल को, क्रेडेंशियल की उस JSON फ़ाइल के पूरे पाथ पर सेट किया जाना चाहिए जिसे आपने बनाया है. इसके लिए, यह तरीका अपनाएं:

export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"

Speech-to-Text API की पुष्टि करने के बारे में ज़्यादा जानें.

5. Node.js के लिए, Google Cloud Speech-to-Text API की क्लाइंट लाइब्रेरी इंस्टॉल करना

सबसे पहले, एक ऐसा प्रोजेक्ट बनाएं जिसका इस्तेमाल Speech-to-Text API लैब को चलाने के लिए किया जाएगा. इसके बाद, अपनी पसंद के फ़ोल्डर में एक नया Node.js पैकेज शुरू करें:

npm init

NPM, प्रोजेक्ट कॉन्फ़िगरेशन के बारे में कई सवाल पूछता है. जैसे, नाम और वर्शन. डिफ़ॉल्ट वैल्यू स्वीकार करने के लिए, हर सवाल के लिए ENTER दबाएं. डिफ़ॉल्ट एंट्री पॉइंट, index.js नाम की फ़ाइल होती है.

इसके बाद, प्रोजेक्ट में Google Cloud Speech लाइब्रेरी इंस्टॉल करें:

npm install --save @google-cloud/speech

Google Cloud के लिए Node.js डेवलपमेंट को सेट अप करने के बारे में ज़्यादा निर्देशों के लिए, कृपया सेटअप गाइड देखें.

अब, आपके पास Speech-to-Text API का इस्तेमाल करने का विकल्प है!

6. ऑडियो फ़ाइलों को लेख में बदलना

इस सेक्शन में, आपको पहले से रिकॉर्ड की गई ऑडियो फ़ाइल को अंग्रेज़ी में ट्रांसक्राइब करना होगा. ऑडियो फ़ाइल, Google Cloud Storage पर उपलब्ध है.

फ़ोल्डर में मौजूद index.js फ़ाइल पर जाएं और कोड की जगह यह कोड डालें:

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
  const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

  // The audio file's encoding, sample rate in hertz, and BCP-47 language code
  const audio = {
    uri: gcsUri,
  };
  const config = {
    encoding: 'LINEAR16',
    sampleRateHertz: 16000,
    languageCode: 'en-US',
  };
  const request = {
    audio: audio,
    config: config,
  };

  // Detects speech in the audio file
  const [response] = await client.recognize(request);
  const transcription = response.results
      .map(result => result.alternatives[0].transcript)
      .join('\n');
  console.log(`Transcription: ${transcription}`);
}

quickstart();

कोड को समझने के लिए, एक या दो मिनट का समय लें. देखें कि इसका इस्तेमाल ऑडियो फ़ाइल को ट्रांसक्राइब करने के लिए किया जाता है*.*

Encoding पैरामीटर से एपीआई को पता चलता है कि ऑडियो फ़ाइल के लिए, किस तरह की ऑडियो एन्कोडिंग का इस्तेमाल किया जा रहा है. Flac, .raw फ़ाइलों के लिए एन्कोडिंग टाइप है. एन्कोडिंग टाइप के बारे में ज़्यादा जानकारी के लिए, दस्तावेज़ देखें.

RecognitionAudio ऑब्जेक्ट में, एपीआई को Cloud Storage में मौजूद हमारी ऑडियो फ़ाइल का यूआरआई या ऑडियो फ़ाइल का लोकल फ़ाइल पाथ पास किया जा सकता है. यहां, हम Cloud Storage यूआरआई का इस्तेमाल कर रहे हैं.

प्रोग्राम चलाएं:

node .

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

how old is the Brooklyn Bridge

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

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

फ़ोल्डर में मौजूद index.js फ़ाइल पर जाएं और कोड की जगह यह कोड डालें:

const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
  const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

  // The audio file's encoding, sample rate in hertz, and BCP-47 language code
  const audio = {
    uri: gcsUri,
  };
  const config = {
    encoding: 'LINEAR16',
    sampleRateHertz: 16000,
    languageCode: 'en-US',
    enableWordTimeOffsets: true,
  };
  const request = {
    audio: audio,
    config: config,
  };

  // Detects speech in the audio file
  const [response] = await client.recognize(request);
  response.results.forEach((result) => {
    result.alternatives.forEach((alternative) => {
      console.log(`Transcript: ${alternative.transcript}`);
      console.log(`Word details:`);
      console.log(` Word count ${alternative.words.length}`);
      alternative.words.forEach((item) => {
        console.log(`  ${item.word}`);
        const s = parseInt(item.startTime.seconds) +
         item.startTime.nanos/1000000000;
        console.log(`   WordStartTime: ${s}s`);
        const e = parseInt(item.endTime.seconds) +
        item.endTime.nanos/1000000000;
        console.log(`   WordEndTime: ${e}s`);
      });
    });
  });
}

quickstart();

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

प्रोग्राम को फिर से चलाएं:

node .

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

Transcript: how old is the Brooklyn Bridge
Word details:
 Word count 6
  how
   WordStartTime: 0s
   WordEndTime: 0.3s
  old
   WordStartTime: 0.3s
   WordEndTime: 0.6s
  is
   WordStartTime: 0.6s
   WordEndTime: 0.8s
  the
   WordStartTime: 0.8s
   WordEndTime: 0.9s
  Brooklyn
   WordStartTime: 0.9s
   WordEndTime: 1.1s
  Bridge
   WordStartTime: 1.1s
   WordEndTime: 1.4s

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

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

इस सेक्शन में, आपको पहले से रिकॉर्ड की गई ऑडियो फ़ाइल को फ़्रेंच में ट्रांसक्राइब करना होगा. ऑडियो फ़ाइल, Google Cloud Storage पर उपलब्ध है.

फ़ोल्डर में मौजूद index.js फ़ाइल पर जाएं और कोड की जगह यह कोड डालें:

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
  const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';

  // The audio file's encoding, sample rate in hertz, and BCP-47 language code
  const audio = {
    uri: gcsUri,
  };
  const config = {
    encoding: 'FLAC',
    languageCode: 'fr-FR',
  };
  const request = {
    audio: audio,
    config: config,
  };

  // Detects speech in the audio file
  const [response] = await client.recognize(request);
  const transcription = response.results
      .map((result) => result.alternatives[0].transcript)
      .join('\n');
  console.log(`Transcription: ${transcription}`);
}

quickstart();

अपने प्रोग्राम को फिर से चलाएं. आपको यह आउटपुट दिखेगा:

maître corbeau sur un arbre perché tenait en son bec un fromage

यह बच्चों की एक मशहूर फ़्रेंच कहानी का वाक्य है.

जिन भाषाओं में सुविधा उपलब्ध है उनकी पूरी सूची और भाषा कोड देखने के लिए, यहां दिया गया दस्तावेज़ देखें.

9. बधाई हो!

आपने Node.js का इस्तेमाल करके, Speech-to-Text API का इस्तेमाल करना सीखा. इससे ऑडियो फ़ाइलों को अलग-अलग तरह से ट्रांसक्राइब किया जा सकता है!

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

इस क्विकस्टार्ट में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud Platform खाते से शुल्क न लिए जाने के लिए:

  • Cloud Platform Console पर जाएं.
  • वह प्रोजेक्ट चुनें जिसे बंद करना है. इसके बाद, सबसे ऊपर मौजूद ‘मिटाएं' पर क्लिक करें: इससे प्रोजेक्ट को मिटाने के लिए शेड्यूल कर दिया जाता है.

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

लाइसेंस

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