> For the complete documentation index, see [llms.txt](https://docs.mindplug.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mindplug.io/api/api-setup-audio/performing-transcription.md).

# Performing Transcription

## 1. Setup OpenAI Key

It's base to generate a base instance for OpenAI using the secret key. To do this, create a file named openai.ts and copy the following code within it:

<pre class="language-typescript"><code class="lang-typescript"><strong>import Bottleneck from 'bottleneck';
</strong>import { Configuration, OpenAIApi } from 'openai';

class CustomFormData extends FormData {
  getHeaders() {
      return {}
  }
}

// helps with rate limits
export const limiterOpenai = new Bottleneck({
  maxConcurrent: 1,
  minTime: 50
});

const configuration = new Configuration({
  apiKey: process.env.NEXT_PUBLIC_OPENAI_API_KEY,
  formDataCtor: CustomFormData
});

const openai = new OpenAIApi(configuration);

export default openai;
</code></pre>

## 2. Generate Transcription

Generating the transcription is now is as a one-liner 😄

```typescript
const response = await openai.createTranscription(file, 'whisper-1', undefined, 'json', 1, 'en');
```

The file here is the audio file to create the transcription for. There are multiple ways to read the file, on web you can simply have an input and set type to file as:

```typescript

const onChangeHandler = async (event) => {
    const file: File = event.target.files[0];
    setFile(file);
};

 
<input accept=".mp3,.wav" onChange={onChangeHandler} type="file" />
```
