import os
from assemblyai import (
Transcriber,
Client,
Settings,
TranscriptStatus,
)
from base64 import b64encode
import json
API_KEY = os.getenv("KEYWORDSAI_API_KEY")
BASE_URL = (
os.getenv("KEYWORDSAI_BASE_URL", "https://api.keywordsai.co/") + "api/assemblyai/"
)
class KeywordsAIAssemblyAIClient(Client):
"""
Define KeywordsAI's AssemblyAI client wrapper for passing extra headers containing keywordsai params
"""
def __init__(self, keywordsai_api_key: str, headers: dict):
settings = Settings(api_key=keywordsai_api_key, base_url=BASE_URL)
print(settings)
super().__init__(settings=settings)
self._http_client.headers.update(headers)
keywordsai_params = {
"metadata": {
"paid_user": "true",
}
# other keywordsai parameters...
}
keywordsai_headers = {
"X-Assemblyai-Api-Key": os.getenv("ASSEMBLYAI_API_KEY"), # <-- This is the AssemblyAI API key
"X-Data-Keywordsai-Params": b64encode(
json.dumps(keywordsai_params).encode()
).decode(),
}
client = KeywordsAIAssemblyAIClient(
keywordsai_api_key=API_KEY, # <-- This is the API key for authenticating against KeywordsAI, not the AssemblyAI API key (defined above)
headers=keywordsai_headers
)
transcriber = Transcriber(client=client)
transcript = transcriber.transcribe("https://assembly.ai/wildfires.mp3")
if transcript.status == TranscriptStatus.error:
print(transcript.error)
else:
print(transcript.text)