音声ファイル認識 (音声ファイルの文字起こし) は、音声ファイルまたは動画ファイルの音声をテキストに変換するサービスです。このサービスは、単一ファイルとバッチ処理の両方をサポートしており、即時の結果を必要としない利用シーンに適しています。
利用シーン
会議や講義の録音:音声ファイルをテキストに文字起こしすることで、重要な情報の検索、分析、整理が容易になります。
カスタマーサービスの通話分析:顧客との通話を自動的に記録・分析し、顧客のニーズを迅速に把握し、サービスリクエストを分類し、顧客の感情を特定するのに役立ちます。このプロセスにより、サービス品質と効率が向上します。
字幕生成:音声・映像素材から字幕を生成し、メディア制作やポストエディットを支援します。このプロセスにより、ポストプロダクションのワークフローが高速化されます。
市場調査とデータ分析:消費者インタビューやフォーカスグループディスカッションなど、市場調査で収集された音声データを分析します。認識モデルを使用して、消費者の意見や好みなどの情報を抽出し、ビジネス上の意思決定をサポートできます。
歌唱認識:BGM (バックグラウンドミュージック) があっても、曲全体を文字起こしします。この機能は、`fun-asr` および `fun-asr-2025-11-07` モデルでのみサポートされています。
モデルの可用性
モデルの選択
言語サポート:
中国語 (標準語、方言)、英語、日本語の場合、最適な結果を得るために Fun-ASR (最新バージョン:fun-asr-2025-11-07) または Paraformer (最新バージョン:Paraformer-v2) モデルの使用を推奨します。
韓国語、スペイン語、フランス語、ドイツ語、イタリア語の場合、Paraformer モデルの使用を推奨します。最新の Paraformer-v2 モデルは、中国語 (標準語および各種方言)、広東語、英語、日本語、韓国語などの言語を指定できるため、特に効果的です。言語を指定すると、システムはその言語にアルゴリズムリソースと⾔語モデルを集中させることができます。このプロセスにより、複数の可能性のある言語間での推測や切り替えが回避され、誤認識の可能性が低減します。
東南アジアや香港地域の言語、例えばベトナム語、タイ語、インドネシア語、広東語、広東語と英語の混合などについては、Fun-ASR の多言語版 (fun-asr-mtl モデル) の使用を推奨します。
ホットワードのカスタマイズ:ビジネスドメインに、認識されにくい固有名詞や業界用語がある場合、ホットワードをカスタマイズできます。これらの単語を語彙に追加することで、認識結果を向上させることができます。ホットワード機能を使用するには、Paraformer または Fun-ASR モデルを選択します。詳細については、「カスタム語彙」をご参照ください。
はじめに
以下のセクションでは、API を呼び出すためのサンプルコードを提供します。
API キーを取得し、API キーを環境変数として設定する必要があります。SDK を使用して呼び出しを行う場合は、DashScope SDK をインストールする必要もあります。
Fun-ASR
音声ファイルや動画ファイルはサイズが大きくなることが多く、ファイル転送と音声認識に時間がかかる場合があります。ファイル認識 API は非同期呼び出しを使用してタスクを送信します。ファイル認識が完了した後、クエリ API を使用して音声認識結果を取得する必要があります。
Python
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.google.gson.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 文字起こしリクエストパラメーターを作成します。
TranscriptionParam param =
TranscriptionParam.builder()
// API キーを環境変数として設定していない場合は、「apikey」を実際の API キーに置き換えてください。
//.apiKey("apikey")
.model("paraformer-v2")
// 「language_hints」パラメーターは、paraformer-v2 モデルでのみサポートされています。
.parameter("language_hints", new String[]{"zh", "en"})
.fileUrls(
Arrays.asList(
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
.build();
try {
Transcription transcription = new Transcription();
// 文字起こしリクエストを送信します。
TranscriptionResult result = transcription.asyncCall(param);
System.out.println("RequestId: " + result.getRequestId());
// タスクが完了するまで現在のスレッドをブロックし、結果を取得します。
result = transcription.wait(
TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
// 結果を出力します。
System.out.println(result.getOutput());
} catch (Exception e) {
System.out.println("error: " + e);
}
System.exit(0);
}
}from http import HTTPStatus
from dashscope.audio.asr import Transcription
import dashscope
import os
import json
# 次の URL はシンガポールリージョン用です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# シンガポールと北京リージョンの API キーは異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください
# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
task_response = Transcription.async_call(
model='fun-asr',
file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav',
'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav']
)
transcribe_response = Transcription.wait(task=task_response.output.task_id)
if transcribe_response.status_code == HTTPStatus.OK:
print(json.dumps(transcribe_response.output, indent=4, ensure_ascii=False))
print('文字起こしが完了しました!')Java
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.common.TaskStatus;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 次の URL はシンガポールリージョン用です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
// 文字起こしリクエストパラメーターを作成します。
TranscriptionParam param =
TranscriptionParam.builder()
// シンガポールと北京リージョンの API キーは異なります。API キーを取得するには、https://www.alibabacloud.com/help/ja/model-studio/get-api-key をご参照ください。
// 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
//.apiKey("apikey")
.model("fun-asr")
.fileUrls(
Arrays.asList(
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
.build();
try {
Transcription transcription = new Transcription();
// 文字起こしリクエストを送信します。
TranscriptionResult result = transcription.asyncCall(param);
System.out.println("RequestId: " + result.getRequestId());
// タスクが終了するまでタスク実行結果をポーリングします。
while (true) {
result = transcription.fetch(TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
if (result.getTaskStatus() == TaskStatus.SUCCEEDED || result.getTaskStatus() == TaskStatus.FAILED) {
break;
}
Thread.sleep(1000);
}
// 結果を出力します。
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
} catch (Exception e) {
System.out.println("error: " + e);
}
System.exit(0);
}
}Paraformer
音声ファイルや動画ファイルはサイズが大きくなることが多く、ファイル転送と音声認識に時間がかかる場合があります。ファイル認識 API は非同期呼び出しを使用してタスクを送信します。ファイル認識が完了した後、クエリ API を使用して音声認識結果を取得する必要があります。
Python
from http import HTTPStatus
from dashscope.audio.asr import Transcription
import json
# API キーを環境変数に設定していない場合は、次のコード行のコメントを解除し、apiKey をご自身の API キーに置き換える必要があります。
# import dashscope
# dashscope.api_key = "apiKey"
task_response = Transcription.async_call(
model='paraformer-v2',
file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav',
'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav'],
language_hints=['zh', 'en'] # "language_hints" は paraformer-v2 モデルでのみサポートされています
)
transcribe_response = Transcription.wait(task=task_response.output.task_id)
if transcribe_response.status_code == HTTPStatus.OK:
print(json.dumps(transcribe_response.output, indent=4, ensure_ascii=False))
print('文字起こしが完了しました!')Java
入力ファイルの制限
Fun-ASR モデル | Paraformer モデル | |
入力ファイルメソッド | 音声ファイル URL | |
ファイル数 | 最大 100 | |
ファイルサイズ | 各ファイル URL は、2 GB 以下、12 時間以下のファイルを指す必要があります。 | |
ファイル形式 | aac、amr、avi、flac、flv、m4a、mkv、mov、mp3、mp4、mpeg、ogg、opus、wav、webm、wma、wmv | |
サンプルレート | 任意 | paraformer-v2 モデルはサンプルレートに制限はありません。paraformer-8k-v2 モデルは 8 kHz のサンプルレートのみをサポートします。 |
ファイルサイズに関する注意:ファイルがサイズ制限を超える場合は、ファイルを前処理してサイズを小さくしてみてください。詳細については、ベストプラクティスをご参照ください。
オーディオ形式に関する注意:オーディオおよびビデオファイルの形式は数多く多様であるため、すべての形式が正しく認識されることを保証することはできません。ファイルが正常に音声認識されるか、テストで確認することを推奨します。
サンプルレートに関する注意:サンプルレートは、音響信号が 1 秒あたりにサンプリングされる回数です。サンプルレートが高いほど多くの情報が提供され、音声認識の精度向上に役立ちます。ただし、過度に高いサンプルレートは無関係な情報を導入し、認識に悪影響を与える可能性があります。実際のサンプルレートに適したモデルを選択することを推奨します。例えば、8000 Hz のオーディオデータには、データを 16000 Hz に変換するのではなく、直接 8000 Hz をサポートするモデルを使用してください。
API リファレンス
よくある質問
Q:認識精度を向上させるにはどうすればよいですか?
影響要因を考慮し、適切な対策を講じることで認識精度を向上させることができます。
主な影響要因:
音質:録音デバイスの品質、サンプルレート、環境ノイズがオーディオの明瞭さに影響します。高品質なオーディオは、正確な認識の基本です。
話者の特徴:ピッチ、発話速度、アクセント、方言の違いは、特に珍しい方言や強いアクセントの場合、認識の難易度を高める可能性があります。
言語と語彙:混合言語、専門用語、スラングは認識の難易度を高める可能性があります。これらのケースでは、ホットワードを設定して認識を最適化できます。
文脈理解:文脈の欠如は、特に正しい認識に文脈が必要な状況で、意味の曖昧さを引き起こす可能性があります。
最適化方法:
オーディオ品質の最適化:パフォーマンス専有型のマイクと推奨サンプルレートのデバイスを使用します。また、環境ノイズやエコーを低減することもできます。
話者への適応:強いアクセントや方言が関わる利用シーンでは、それらの方言をサポートするモデルを選択します。
ホットワードの設定:専門用語、固有名詞、その他の特定の用語に対してホットワードを設定します。詳細については、「カスタム語彙」をご参照ください。
文脈の保持:オーディオを短すぎるクリップに分割しないようにします。