オーディオフェード計算
この音声フェード計算ツールは、クリップの長さと2つのフェード時間を、線形ボリュームエンベロープに必要な正確な時刻とゲインの点へ変換します。無音、最大ゲイン、一定区間、最後に無音へ至るフェードを示し、同一時刻の重複点は取り除きます。結果は常に同じ入力から同じ値になり、編集ソフト、自動化スクリプト、レンダリング処理、入力検証へそのまま応用できます。指定したフェードの合計がクリップ時間を超える場合は、不可能なエンベロープを返さず、明確な入力エラーとして停止します。
無料で実行
3つの時間値から明確なエンベロープを作成します
音声フェードは説明自体は簡単ですが、ツールごとに異なる形式で記述されがちです。この計算では、クリップ全体の長さ、フェードイン時間、フェードアウト時間を秒単位で受け取ります。返されるのは、時刻と線形ゲインを持つ点を時間順に並べた一覧です。ゲイン0は無音、ゲイン1は元の信号レベルを表します。フェードインを指定すると、エンベロープは0から始まり、その終了時に1へ達します。フェードアウトを指定すると、開始時までは1を保ち、クリップの終端で0になります。後段の編集ソフトやレンダラーでは、連続する点の間を線形補間できます。長さ0のフェードも明示的に処理されます。フェードインがなければ冒頭は最大ゲイン、フェードアウトがなければ末尾も最大ゲインです。同じ時刻に重なる点は1つにまとめるため、結果は簡潔で、重複した時刻による自動処理の曖昧さも生じません。
重なりの規則と境界条件をご確認ください
2つのフェードは有限の1本の時間軸を共有するため、両方の長さの合計がクリップ時間を超えることはできません。合計が超過すると、フェードインがまだ上昇している間にフェードアウトを開始する必要があり、最大ゲインを通る単純な線形エンベロープは成立しません。この場合は無効な入力として拒否されます。合計がクリップ時間と等しい場合は有効です。フェードインが最大ゲインへ達する瞬間とフェードアウトの開始が一致し、その共有点は1回だけ出力されます。すべての数値は有限でなければならず、無限大、NaN、文字列、未指定の項目は受け付けません。クリップ時間は0より大きい必要がありますが、各フェードには0を指定できます。この規則により境界での動作が予測可能になり、不可能な設定が音声エンジン側で勝手に切り詰められたり、並べ替えられたり、別の意味に解釈されたりすることを防げます。
編集やレンダリング処理で区切り点をご利用ください
返される点はサンプル値やデシベルではなく、正規化されたゲインエンベロープを表すため、さまざまな環境へ移植できます。時刻を編集ソフトのタイムラインへ対応付けたり、対象システムが必要とする場合は線形ゲインをデシベルへ変換したり、オフラインレンダラー向けの自動化コマンドを生成したりできます。この出力は音声を変更せず、メディアファイルも調べません。指定された時間から制御形状だけを計算します。そのため、素材のアップロード前に編集内容を設計する仕組み、フォーム設定の検証、後日のレンダリング用に小さな編集指示を保存する用途に適しています。線形フェードでは点の順序を保ち、隣接するゲイン間を補間してください。エンジンがミリ秒を使用する場合は、連携時に各時刻を1000倍します。等電力曲線や対数曲線では、これらの点を時間アンカーとして、その間へ目的の曲線を適用できます。
活用例
編集ソフトを自動化する
フォームの値を、クリップのタイムライン上に並ぶ線形ゲインのキーフレームへ変換できます。
レンダリング処理を事前検証する
待機中のレンダラーが素材を読み込む前に、成立しないフェードの重なりを拒否できます。
移植可能な編集指示を保存する
小さな正規化エンベロープを保存し、後から秒、ミリ秒、デシベル、固有コマンドへ合わせられます。
よくある質問
ゲイン値は何を表しますか?
線形かつ正規化された値です。0は無音、1は元の信号レベルを表し、中間値は線形補間で求めます。
2つのフェードをちょうど接続できますか?
はい。両方の長さの合計をクリップ時間と等しくでき、接続位置には最大ゲインの点が1つ置かれます。
フェード時間が0の場合はどうなりますか?
長さ0のフェードは傾斜として出力されません。該当する境界は最大ゲインとなり、重複点も追加されません。
音声ファイルを処理または送信しますか?
いいえ。3つの数値だけで確定的な時間計算を行い、音声メディアの読み取りや変更はいたしません。
API リクエストの料金はいくらですか?
API リクエスト1回の料金は $0.002 です。ブラウザー版は端末内で動作し、同じエンベロープ計算を行います。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/audio/fade-in-out \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration":12,"fade_in":2.5,"fade_out":3}'const res = await fetch("https://api.kit.forhosting.com/audio/fade-in-out", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration": 12,
"fade_in": 2.5,
"fade_out": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/fade-in-out",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration": 12,
"fade_in": 2.5,
"fade_out": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/fade-in-out", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration":12,"fade_in":2.5,"fade_out":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration":12,"fade_in":2.5,"fade_out":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/fade-in-out", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"duration": 12,
"fade_in": 2.5,
"fade_out": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.fade_in_out",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 200 |
max_minutes | 180 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |