[youtube] Extracting URL: https://www.youtube.com/watch?v=7Ron6MN45LY
[youtube] 7Ron6MN45LY: Downloading webpage
[youtube] 7Ron6MN45LY: Downloading ios player API JSON
[youtube] 7Ron6MN45LY: Downloading android player API JSON
[youtube] 7Ron6MN45LY: Downloading m3u8 information
[info] 7Ron6MN45LY: Downloading 1 format(s): 140
[download] docs/youtube//Learn How to Solve a Rubik's Cube in 10 Minutes (Beginner Tutorial).m4a has already been downloaded
[download] 100% of    9.30MiB
[ExtractAudio] Not converting audio docs/youtube//Learn How to Solve a Rubik's Cube in 10 Minutes (Beginner Tutorial).m4a; file is already in target format m4a
Transcribing part 1!
---------------------------------------------------------------------------
RateLimitError                            Traceback (most recent call last)
Cell In[28], line 7
      2 save_dir="docs/youtube/"
      3 loader = GenericLoader(
      4     YoutubeAudioLoader([url],save_dir),
      5     OpenAIWhisperParser()
      6 )
----> 7 docs = loader.load()
File /usr/local/lib/python3.9/site-packages/langchain/document_loaders/generic.py:90, in GenericLoader.load(self)
     88 def load(self) -> List[Document]:
     89     """Load all documents."""
---> 90     return list(self.lazy_load())
File /usr/local/lib/python3.9/site-packages/langchain/document_loaders/generic.py:86, in GenericLoader.lazy_load(self)
     84 """Load documents lazily. Use this when working at a large scale."""
     85 for blob in self.blob_loader.yield_blobs():
---> 86     yield from self.blob_parser.lazy_parse(blob)
File /usr/local/lib/python3.9/site-packages/langchain/document_loaders/parsers/audio.py:51, in OpenAIWhisperParser.lazy_parse(self, blob)
     49 # Transcribe
     50 print(f"Transcribing part {split_number+1}!")
---> 51 transcript = openai.Audio.transcribe("whisper-1", file_obj)
     53 yield Document(
     54     page_content=transcript.text,
     55     metadata={"source": blob.source, "chunk": split_number},
     56 )
File /usr/local/lib/python3.9/site-packages/openai/api_resources/audio.py:57, in Audio.transcribe(cls, model, file, api_key, api_base, api_type, api_version, organization, **params)
     55 requestor, files, data = cls._prepare_request(file, file.name, model, **params)
     56 url = cls._get_url("transcriptions")
---> 57 response, _, api_key = requestor.request("post", url, files=files, params=data)
     58 return util.convert_to_openai_object(
     59     response, api_key, api_version, organization
     60 )
File /usr/local/lib/python3.9/site-packages/openai/api_requestor.py:226, in APIRequestor.request(self, method, url, params, headers, files, stream, request_id, request_timeout)
    205 def request(
    206     self,
    207     method,
   (...)
    214     request_timeout: Optional[Union[float, Tuple[float, float]]] = None,
    215 ) -> Tuple[Union[OpenAIResponse, Iterator[OpenAIResponse]], bool, str]:
    216     result = self.request_raw(
    217         method.lower(),
    218         url,
   (...)
    224         request_timeout=request_timeout,
    225     )
--> 226     resp, got_stream = self._interpret_response(result, stream)
    227     return resp, got_stream, self.api_key
File /usr/local/lib/python3.9/site-packages/openai/api_requestor.py:619, in APIRequestor._interpret_response(self, result, stream)
    611     return (
    612         self._interpret_response_line(
    613             line, result.status_code, result.headers, stream=True
    614         )
    615         for line in parse_stream(result.iter_lines())
    616     ), True
    617 else:
    618     return (
--> 619         self._interpret_response_line(
    620             result.content.decode("utf-8"),
    621             result.status_code,
    622             result.headers,
    623             stream=False,
    624         ),
    625         False,
    626     )
File /usr/local/lib/python3.9/site-packages/openai/api_requestor.py:679, in APIRequestor._interpret_response_line(self, rbody, rcode, rheaders, stream)
    677 stream_error = stream and "error" in resp.data
    678 if stream_error or not 200 <= rcode < 300:
--> 679     raise self.handle_error_response(
    680         rbody, rcode, resp.data, rheaders, stream_error=stream_error
    681     )
    682 return resp
RateLimitError: exceeded quota for this month
Hello @vsrinivas ,
This means that you have exhausted your account’s free quota to use it.
With regards,
Nilosree Sengupta
Hello @ nilosreesengupta, I understand that. Just to clarify, it is the learning platform account, not my account. The notebook was provided for students to try out. Hence, I have highlighted the error.
Hello @ nilosreesengupta, this ratelimiterror still continues, thus preventing execution of code provided in the notebook. Can the account quota for the learning platform be extended?
Hello @vsrinivas ,
Okay, I am asking the team and will let you know.
With regards,
Nilosree Sengupta
Hello @vsrinivas ,
No, extension is not possible. However, you should have a reseted rate limit next month.
With regards,
Nilosree Sengupta




Hi @nilosreesengupta , just thought of seeking a few clarifications on account free quota.
- Is the limit per user per course per month? Or is it per user per month irrespective of number of courses?
- If it is per user, is there a way I know how much free quota is left for me for that month at any point of time?
Hello @Mubsi ,
I’m tagging you here.
@vsrinivas , he will be the right person to clear your doubts better regarding the free quota.
Thanks,
With regards,
Nilosree Sengupta
Hi @vsrinivas,
Let me get back to you on that.