speech_recognition
speech_recognition copied to clipboard
recognize_whisper_api(audio, api_key=OPENAI_API_KEY) causes openai.error.AuthenticationError: No API key provided.
Steps to reproduce
pip install 'SpeechRecognition[whisper-api]' pyaudio- Insert OpenAI API Key in
examples/microphone_recognition.pyand comment out other recognizers
https://github.com/Uberi/speech_recognition/blob/8b07762f80dfec2d34fb4c40b8eddbb7ec503521/examples/microphone_recognition.py#L97
- Run
examples/microphone_recognition.py
Expected behaviour
See Whisper API response.
Actual behaviour
See the following error.
% python examples/microphone_recognition.py
Say something!
Traceback (most recent call last):
File "/.../examples/microphone_recognition.py", line 99, in <module>
print(f"Whisper API thinks you said {r.recognize_whisper_api(audio, api_key=OPENAI_API_KEY)}")
File "/.../venv/lib/python3.10/site-packages/speech_recognition/recognizers/whisper.py", line 41, in recognize_whisper_api
transcript = openai.Audio.transcribe(model, wav_data, api_key=api_key)
File "/.../venv/lib/python3.10/site-packages/openai/api_resources/audio.py", line 55, in transcribe
requestor, files, data = cls._prepare_request(file, file.name, model, **params)
File "/.../venv/lib/python3.10/site-packages/openai/api_resources/audio.py", line 28, in _prepare_request
requestor = api_requestor.APIRequestor(
File "/.../venv/lib/python3.10/site-packages/openai/api_requestor.py", line 130, in __init__
self.api_key = key or util.default_api_key()
File "/.../venv/lib/python3.10/site-packages/openai/util.py", line 186, in default_api_key
raise openai.error.AuthenticationError(
openai.error.AuthenticationError: No API key provided. You can set your API key in code using 'openai.api_key = <API-KEY>', or you can set the environment variable OPENAI_API_KEY=<API-KEY>). If your API key is stored in a file, you can point the openai module at it with 'openai.api_key_path = <PATH>'. You can generate API keys in the OpenAI web interface. See https://onboard.openai.com for details, or email [email protected] if you have any questions.
It seems that api_key is not passed to Whisper API request.
✨Workaround
Set OPENAI_API_KEY.
export or pass like
% OPENAI_API_KEY="INSERT OPENAI API KEY HERE" python examples/microphone_recognition.py
Say something!
Whisper API thinks you said Hi Whisper, how are you?
System information
My system is macOS Monterey.
My Python version is Python 3.10.9.
My Pip version is pip 23.0.1.
My SpeechRecognition library version is 3.10.0.
My PyAudio library version is 0.2.13.
% pip list
Package Version
------------------ ---------
aiohttp 3.8.4
aiosignal 1.3.1
async-timeout 4.0.2
attrs 22.2.0
certifi 2022.12.7
charset-normalizer 3.1.0
frozenlist 1.3.3
idna 3.4
multidict 6.0.4
openai 0.27.2
pip 23.0.1
PyAudio 0.2.13
requests 2.28.2
setuptools 67.6.0
SpeechRecognition 3.10.0
tqdm 4.65.0
urllib3 1.26.15
yarl 1.8.2
Open https://github.com/openai/openai-python/issues/303
Add this to your code:
os.environ['OPENAI_API_KEY'] = 'API_KEY_HERE'
recongnize_whisper_api() tries to get an environment variable called "OPENAI_API_KEY", this sets that variable. Add this to your code instead of adding an argument to recongnize_whisper_api().