0
0

Node.jsからAzure Open AIのWhisperを使う

Last updated at Posted at 2023-12-06

Open AIのAPIでWhisperは使いましたが、Azure Open AIでも使ってみようと思います。中身は変わらないはず。

モデルのデプロイまで

リソース作成 - 米国中北部または西ヨーロッパ リージョン

そもそも全てのリージョンで使える訳じゃないってのがあります。

スクリーンショット 2023-12-06 20.32.02.png
https://learn.microsoft.com/ja-jp/azure/ai-services/openai/whisper-quickstart?tabs=command-line&pivots=rest-api

米国中北部または西ヨーロッパ リージョンってあるので米国中北部で作ってみます。

North Central USがたぶんそう
スクリーンショット 2023-12-06 20.34.47.png

モデルデプロイ - Whisper

モデルデプロイ > 展開の管理、ここ別タブで開く様にしてほしすぎる。

スクリーンショット 2023-12-06 20.37.49.png

選択肢にWhisperが!!!

日本リージョンとか選んでなんで選択肢にでないんだろうとか悩んでたので割とこれだけで嬉しい。

Whisperを選んで進みます。

スクリーンショット 2023-12-06 20.39.12.png

n0bisuke-whisperって名前にしてデプロイしておきます。

スクリーンショット 2023-12-06 20.40.51.png

Node.jsから触る

前回の記事で生成したこちらの音声を使ってみます。

$ npm i @azure/openai
const { OpenAIClient, AzureKeyCredential } = require("@azure/openai");
const fs = require('node:fs/promises');

const azureApiKey = `XXXXXXX`;
const endpoint = `https://YYYYYYYY.openai.azure.com/`;

async function main() {
  console.log("== Transcribe Audio Sample ==");

  const client = new OpenAIClient(endpoint, new AzureKeyCredential(azureApiKey));
  const deploymentName = "n0bisuke-whisper"; //デプロイ名
  const audio = await fs.readFile('./akiba.mp3');
  const result = await client.getAudioTranscription(deploymentName, audio, {language: 'ja'});

  console.log(`Transcription: ${result.text}`);
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

出力結果は以下の様になりました。

$ node app.js
== Transcribe Audio Sample ==
Transcription: こんにちは。秋葉原の電気街口にいます。

生成された音声を元に戻した感じですが、完璧ですね。。

一応この辺を見ると第3引数でオプションを渡せてLangage指定ができそうでした。精度上がるっぽいけどどうなんでしょう。

https://learn.microsoft.com/ja-jp/javascript/api/%40azure/openai/getaudiotranscriptionoptions?view=azure-node-preview#@azure-openai-getaudiotranscriptionoptions-language

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0