電話キーパッドのDTMF周波数を検索
DTMF音は、低周波数の行から1つ、高周波数の列から1つを選び、2つを同時に鳴らすことで電話のキーを表します。0から9までの数字、アスタリスク、またはシャープを入力すると、標準で定められた正確な組み合わせをヘルツ単位で取得できます。結果は常に一定ですぐに返るため、キー配列表を手作業で調べずに、電話システムのソフトウェア、音声生成器、デコーダー、技術資料、テストデータを確認できます。
無料で実行
1つのキーが2つの周波数になる仕組み
DTMFと呼ばれる二周波同時信号方式では、電話のキーパッドを周波数の行列として扱います。横方向の各行には低い周波数が1つずつ、縦方向の各列には高い周波数が1つずつ割り当てられています。キーを押すと、その位置の行と列に対応する周波数が組み合わされ、固有のペアが作られます。たとえば、1、2、3のキーは同じ低周波数を共有しますが、高周波数はそれぞれ異なります。この検索結果では、低周波数と高周波数を個別に返すだけでなく、低い値を先頭にした順序付きのペアとしても返します。そのため、仕様書を読む場合にも、発振器、検出器、テスト条件を設定するプログラムにも利用しやすい形式です。結果の単位はヘルツです。音声ファイルの合成、音の長さの推定、録音データの解析は行いません。対応表は一般的なDTMF配列で固定されているため、受け付けた同じキーからは、丸め処理、ネットワーク通信、端末依存の計算なしで常に同じ結果が得られます。
入力できるキーパッド文字
入力できるのは、標準的な12キー電話キーパッドにある1文字だけです。対象は0から9までの数字、アスタリスク、シャープです。文字はそのまま判定されるため、APIを呼び出す場合、数字も文字列として送信してください。空白、単語、複数の文字、負号、および2つのキー記号以外の句読記号を指定すると、入力エラーになります。技術的なDTMF仕様の一部には、A、B、C、Dという制御キーを含む第4列も定義されています。これらは軍用機器や通信網制御用の特殊な装置で使われていましたが、この機能が対象とする一般的な電話キーパッドにはありません。そのため、意図的に受け付けていません。対象を明確に限定することで、異なるキー配列を誤って想定することを防ぎます。フォームを作成する場合は、宣言済みの選択肢を一覧として表示できます。プログラムから利用する場合は、自動的な数値変換に任せず、送信前に目的のキーを検証するか、明示的に文字列へ変換してください。
電話システム開発での結果の活用方法
返される低周波数と高周波数は、ソフトウェアの動作を電話キーパッドに合わせる場面で基準データとして利用できます。トーン生成器では、このペアを使って2つの発振器を設定してから、用途に応じた振幅、サンプリング周波数、継続時間を適用できます。デコーダーのテストでは、既知のペアに対して認識されるべきキーを指定できます。品質保証では、自動音声応答メニュー、ダイヤラー、ソフトフォン、ゲートウェイ、組み込み機器向けの安定したテストデータとして結果を保存できます。隣接するキーを検出器が混同する理由の確認にも役立ちます。同じ行のキーは低周波数を共有し、同じ列のキーは高周波数を共有するためです。この機能は、レベル差、許容偏差、信号の間隔、信号強度、録音音声の通信規格適合性を判定しません。それらには実際の信号測定が必要です。ここで得られるのは公称周波数の対応だけです。単発の確認にはブラウザーを使用でき、自動処理で小さく予測可能なJSON応答が必要な場合は、1回あたり$0.002のAPIをご利用いただけます。
活用例
DTMF音生成器を設定する
アプリケーションが送出するキーについて、2つの発振器に設定する公称の低周波数と高周波数を取得できます。
デコーダーのテストデータを作る
キーパッド文字と標準の周波数ペアを対応させた、明確で安定した期待値を作成できます。
電話システムの技術資料を確認する
IVRの流れ、ダイヤラー、ゲートウェイ設定、技術メモを見直す際に周波数ペアを確認できます。
よくある質問
どの文字を入力できますか?
0から9までの数字、アスタリスク、シャープのいずれか1文字を正確に入力してください。
DTMFのA、B、C、Dキーが使えないのはなぜですか?
これらは特殊な第4列のキーであり、ここで対象とする一般的な12キー電話キーパッドには存在しないためです。
聞こえる音を生成できますか?
いいえ。公称周波数のペアをデータとして返すだけで、音声の合成、再生、ダウンロードは行いません。
キーパッド音の録音を解析できますか?
いいえ。録音解析には信号の周波数を測定するデコーダーが必要です。この機能は既知のキーに対応するペアだけを検索します。
APIリクエストの料金はいくらですか?
APIリクエストは1回あたり$0.002です。同じ決定的な検索をブラウザーでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/audio/dtmf-tone-lookup \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"key":"5"}'const res = await fetch("https://api.kit.forhosting.com/audio/dtmf-tone-lookup", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"key": "5"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/dtmf-tone-lookup",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"key": "5"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/dtmf-tone-lookup", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"key":"5"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"key":"5"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/dtmf-tone-lookup", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"key": "5"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.dtmf_tone_lookup",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |