こちらと同じことを TypeScript で行いました。
Node.js: ChatGPT Speech to text の使い方 (axios)
音源も同じです。
プログラム
type_text.ts
// ---------------------------------------------------------------
// type_text.ts
//
// Apr/05/2023
//
// ---------------------------------------------------------------
import axios from 'axios'
import FormData from 'form-data'
import fs from 'fs'
import dotenv from 'dotenv'
dotenv.config()
const token = `${process.env.API_KEY}`
const file = 'yonendowa1_08_rappa_niimi.mp3'
const model = 'whisper-1'
const form = new FormData()
form.append('file', fs.createReadStream(file))
form.append('model', model)
axios({
method: 'post',
url: 'https://api.openai.com/v1/audio/transcriptions',
data: form,
headers: {
'Content-Type': `multipart/form-data boundary=${form.getBoundary()}`,
'Authorization': `Bearer ${token}`
}
})
.then(response => {
console.log(response.data)
})
.catch(error => {
console.error(error)
})
// ---------------------------------------------------------------
.env
API_KEY="sk-11******************************************"
必要なライブラリーのインストール
npm install axios
npm install form-data
npm install dotenv
実行結果
$ ts-node type_text.ts
{
text: 'LibriVox.orgのために録音されました。 ラッパ おじいさんは田舎に一人ぼっちで暮らしていました。 だんだん耳が遠くなったので、 都にいる息子のところへ 耳が遠くなったから よく聞こえる機械を買って送ってくれ と言ってやりました。 息子はいろいろ探したが あまり良い機械がないので ラッパを買って これを逆さまにして耳につけて ラッパの尻から聞きなさい と言ってやりました。 おじいさんはそのラッパを喜んで使っていましたが 耳はどんどん遠くなって とうとうつんぼになりました。 それでもおじいさんは あのラッパでは聞こえなくなったから もっとよく聞こえるのを 送ってくれと息子に手紙をやりました。 息子はいろいろ考えてから また前のラッパと同じラッパを送って このラッパを耳につけると 私の声が聞こえます と言ってやりました。 おじいさんはそのラッパを耳に当ててみました。 そして ああ、聞こえる、聞こえる 懐かしい息子の声が聞こえる と言って喜びました。 けれど、それはおじいさんの耳が聞いたのではありません 心が聞いたのです。 ラッパ終わり この録音はパブリックドメインです。'
}
確認したバージョン
$ ts-node --version
v10.9.1