音声を時刻でトリミング
開始30.5秒、終了95.25秒なら、クリップの長さは64.75秒で、245.75秒の録音に収まることも確認できます。前後が逆の時刻や範囲外の時刻は、勝手に直さずはっきり拒否します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 継続時間 (秒)
- 245.75
- 開始秒
- 30.5
- 終了秒
- 95.25
- クリップの長さ (秒)
- 64.75
時刻を指定して音声を切り出す前に、対象区間が元の録音に収まっているかを確実に確認できます。音声全体の長さ、開始時刻、終了時刻を秒で入力すると、範囲を検証してクリップの正確な長さを返します。終了が開始より前の場合、音声全体を超える時刻、負数、未入力、有限でない値は受け付けません。音声ファイルのアップロードや変更は行いません。編集コマンドの準備、入力フォームの検証、チャプター境界の確認、負荷の高いメディア処理を始める前のテストに利用できる、再現可能な計算ツールです。
切り出す範囲を秒で指定します
切り出し範囲には、元音声の全体時間、選択区間の開始点、終了点という3つの独立した値があります。この計算ではすべて秒を使うため、時計形式、サンプル、フレーム、ミリ秒の間で暗黙の変換は発生しません。小数の秒にも対応しており、12.5 のような値を使えば、整数秒に合わない会話部分も指定できます。
開始時刻は録音の先頭を基準とし、0 が最初の瞬間です。終了時刻も同じ基準から測り、希望する長さとしては解釈しません。範囲が有効なら、クリップの長さは終了から開始を引いて求めます。
たとえば開始 30.5、終了 95.25 なら結果は 64.75 秒です。全体時間はこの引き算には含まれず、両方の時刻が音声内に存在することを確認する上限として働きます。開始と終了が同じ値でも有効で、長さ 0 秒を返します。
これは、後続の編集処理で最小長を要求する前に、画面上の操作部品を検証する場合に便利です。すべての値は有限かつ0以上で、公開された上限以内でなければなりません。
各検証エラーの意味を確認します
一見正しい引き算でも実現不可能な編集範囲を隠すことがあるため、長さを返す前に入力を検証します。必須の各項目には、有限で0以上の数値が必要です。負の秒数、Infinity、NaN、空の文字列、書式設定済みの時刻表現は推測せずに拒否します。
開始は全体時間を超えられません。5分の録音には6分目の開始点が存在しないためです。終了が開始より前だと逆向きの区間となり、負の長さが生じるので無効です。
また、開始が正しくても終了は全体時間を超えられません。終了が全体時間と完全に同じ場合は有効で、元音声の最後までを表します。複数の誤りがある場合は、表示された箇所を修正して再送してください。
検証順序は一定なので、同じ入力には常に同じ最初の問題が返ります。意図しない切り出しを承認しないよう、値の自動調整、両端の入れ替え、絶対値への変換は行いません。
音声処理の前に結果を活用します
正規化された入力と計算結果を一緒に保存すると、ログの記録、確認、編集要求との比較が容易です。Web フォームでは、範囲ハンドルを動かすたびに再計算し、選択した長さをすぐに表示できます。サーバーでは FFmpeg の処理前に同じ確認を行い、メディア処理資源を割り当てる前に不可能な範囲を拒否できます。
チャプター、ポッドキャストの抜粋、音声メモ、文字起こし区間、キューポイントのテストにも適しています。この処理は検証と引き算だけを行うため、ファイルを開かず、申告された全体時間が実際の音声と一致するか確認せず、コーデックのシーク精度やサンプル境界も扱わず、出力クリップも作成しません。それらは後続の音声処理で行ってください。
内部では秒を数値のまま保持し、表示時だけ分や秒に整形すると解析の曖昧さを避けられます。
活用例
編集画面の選択範囲を検証
操作ハンドルの時刻を元音声の長さと照合し、書き出しを許可する前に正確な選択時間を表示します。
音声処理ジョブを事前に保護
FFmpeg が元ファイルを取得またはデコードする前に、逆転した範囲や上限外の値を拒否します。
チャプターと文字起こしを確認
抜粋やチャプターの境界が録音内に収まることを確かめ、各区間の長さを計算します。
よくある質問
音声ファイルは送信または変更されますか?
いいえ。 数値の時刻を検証して長さを計算するだけで、音声ファイルの受信、解析、編集は行いません。
どの単位で入力すればよいですか?
全体時間、開始、終了を秒で入力してください。小数を使うと1秒未満の精度で指定できます。
終了時刻を録音全体の長さと同じにできますか?
はい、できます。終了時刻が録音の長さとちょうど同じなら、音声の最後の瞬間まで続くクリップとして扱われます。それを超える終了時刻は受け付けません。
前後が逆の時刻はなぜ自動で直されないのですか?
ファイルの終わりに合わせて丸めたり、開始と終了を入れ替えたり、マイナスを無視したりすると、意図しないカットを認めてしまうおそれがあるからです。拒否されたら、元の誤りを直してください。
開始と終了が同じだとどうなりますか?
受け付けられ、長さゼロ秒の選択として返されます。編集画面で範囲を指定するつまみを確かめるときなどに便利で、空でない書き出しは別の段階で求めることができます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/audio/trim-by-timestamp \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration_seconds":245.75,"start_seconds":30.5,"end_seconds":95.25}'const res = await fetch("https://api.kit.forhosting.com/audio/trim-by-timestamp", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration_seconds": 245.75,
"start_seconds": 30.5,
"end_seconds": 95.25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/trim-by-timestamp",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration_seconds": 245.75,
"start_seconds": 30.5,
"end_seconds": 95.25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/trim-by-timestamp", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration_seconds":245.75,"start_seconds":30.5,"end_seconds":95.25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration_seconds":245.75,"start_seconds":30.5,"end_seconds":95.25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/trim-by-timestamp", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"duration_seconds": 245.75,
"start_seconds": 30.5,
"end_seconds": 95.25
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.trim_by_timestamp",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_duration_seconds | 3155760000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
各検証エラーの意味を確認します
条件を個別に調べるため、API クライアントは問題の関係を示す invalid_input メッセージを受け取れます。
音声処理の前に結果を活用します
成功時の応答には、検証済みの全体時間、開始、終了とともに clip_duration_seconds が含まれます。ネットワーク、時計、乱数、保存状態を使わないので、ブラウザーと API は同じ結果になります。ブラウザー版は無料で、API の1回の料金は $0.002 です。
技術的な質問
終了を全体時間と同じ値にできますか?
はい。その指定は元音声の最後まで続くクリップを表します。
開始と終了が同じ場合はどうなりますか?
有効な範囲として扱い、clip_duration_seconds は0になります。後続の編集処理で最小長を設定できます。
API の計算料金はいくらですか?
成功した API リクエスト1回につき $0.002 です。ブラウザー版は無料で、無効なリクエストには課金されません。