REST API · OpenAPI 3.1 · MCPサーバー
開発者向けAPI
ファイル、リンク、テキストをコードと歌詞に変換し、スクリプトやアシスタントからソングブックを読み書きできます。
- 無料プランあり
- アプリと同じエンジン
- 公式MCPサーバー
APIでできること
各機能は、キーの作成時にチェックするスコープで有効になります。
変換
音声、PDF、画像、テキスト、リンクをソングブック、PDF、MIDI、MusicXMLなどに変換。
非公開ソングブック
曲とプレイリストの一覧、閲覧、作成、編集、整理。
公開プロフィール
読み取り専用:プロフィール、公開された曲、フォロワー。音源は含みません。
ステム分離
変換(output=stems)でボーカルと伴奏を分離します。/stem-tool は2つまたは4つのトラックに分離します。API キーで使う場合は、どちらも Premium アカウントが必要です。
オーディオキュー
アプリと同じキューでコードと歌詞を解析します。
AI生成音楽の検出
ファイル、Spotifyリンク、音声への直接リンク、ISRCについて、AI生成の兆候を示します。
制限、クォータ、プライバシー
AIで生成された音楽が増えています。Jam Jamで生成の兆候を調べましょう。リンクを貼り付けるかファイルをアップロードすると、参考となる結果が得られます。
最大100 MB · 最大10分 · Spotify、音声への直接リンク、ISRCに対応。YouTubeは非対応です。 Spotifyリンクは試聴部分のみの解析となる場合があります。
各アカウントにつき、待機中または処理中のファイルは1つまで。Premiumアカウントを優先します。
ゲスト:1日2回・月5回。無料アカウント:1日5回・月50回。Premium:1日30回・月300回。サイト・アプリ・APIで上限を共有し、失敗した解析はカウントしません。UTC午前0時と毎月1日にリセットします。
音声は検出サービス提供者SH Labsに送信されます。同社は音声を保存せず、モデル学習にも使用しないと説明しています。サービス停止時は、予備処理が利用可能な場合にファイルをローカル解析します。一時ファイルは完了、失敗、キャンセル後に削除します。アカウントにはファイル名またはリンク、日付、状態、結果を90日間保存します。ゲストの結果は24時間です。ゲストの利用枠にはトークンと仮名化したネットワーク識別子を使い、IPアドレスを平文で保存しません。
この指標は確率でも証拠でもありません。低い値でも人間が作ったことを保証しません。
ツールを見る対応フォーマット
正確な上限と、このサーバーが実際に提供している内容を含む完全な最新リストは、常にGET /formatsで確認できます。要約すると:
入力フォーマット
- 音声・動画ファイル
- PDF:コード、歌詞、楽譜、タブ譜、スキャンしたソングブック
- 画像:コード、歌詞、楽譜、タブ譜
- プレーンテキスト、ChordPro、OnSong
- リンクとウェブ検索(page-link、web-search)
- MusicXML、MIDI
- JamSong、混在した.zip、ソングブック(ピボット)
出力フォーマット
- ソングブック(JSONピボット、常に利用可能)
- PDF:コード、歌詞、楽譜、タブ譜、コード表
- PNG、HTML、プレーンテキスト、ChordPro
- chords-lab、chords-csv、キーとBPM
- MusicXML、MIDI(Premium)
- 同期歌詞:.lrc、.srt
- カラオケ動画(.mp4)、伴奏音源、JamSong
4つのステップで始める
変換は非同期です:送信し、進行を追い、結果を受け取ります。
-
キーを作成
設定 › APIキー。接頭辞は
APIキーを管理jj_live_、表示は一度だけ、1アカウント5個まで、いつでも失効可能。 -
送信
ファイル、URL、テキストのいずれかを、希望する出力フォーマットとともに送信。
POST /jobs -
追跡
Retry-Afterを守ってポーリングするか、Server-Sent Eventsのストリームを開きます。GET /jobs/{id}GET /jobs/{id}/events -
受け取り
結果は24時間利用でき、その後は410 Goneになります。
GET /jobs/{id}/result
サンプル
そのままコピーして使える完全な呼び出し例です。
このサーバーが対応するフォーマットを一覧表示curl
curl https://jam-jam.org/api/v1/formatsファイルをPDFに変換curl
curl -X POST https://jam-jam.org/api/v1/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-F [email protected] \
-F inputFormat=pdf-songbook \
-F output=pdf-songbookURLをソングブックに変換curl
curl -X POST https://jam-jam.org/api/v1/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/tabs/amazing-grace", "output": "songbook"}'進捗を確認する(SSEまたはポーリング)curl
# Server-Sent Events
curl -N -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/jobs/jb_123/events
# Polling
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/jobs/jb_123結果をダウンロードcurl
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-OJ https://jam-jam.org/api/v1/jobs/jb_123/resultPython (requests)python
import time
import requests
API = "https://jam-jam.org/api/v1"
HEADERS = {"Authorization": "Bearer jj_live_xxxxxxxxxxxxxxxx"}
# 1. Discover formats
formats = requests.get(f"{API}/formats").json()
# 2. Submit a conversion
resp = requests.post(
f"{API}/jobs",
headers=HEADERS,
json={"url": "https://example.com/tabs/amazing-grace", "output": "songbook"},
)
resp.raise_for_status()
job = resp.json()
# 3. Poll until done (or use GET /jobs/{id}/events for SSE)
while job["phase"] not in ("done", "failed", "cancelled"):
time.sleep(job.get("etaS", 2))
job = requests.get(f"{API}/jobs/{job['id']}", headers=HEADERS).json()
# 4. Fetch the result
if job["phase"] == "done":
songbook = requests.get(f"{API}/jobs/{job['id']}/result/songbook", headers=HEADERS).json()
print(songbook["songs"][0]["title"])
else:
print("failed:", job.get("problem"))AI音楽検出で曲を解析するcurl
# Availability and remaining quota (no key needed)
curl https://jam-jam.org/api/v1/ai-music/availability
# Analyze a file
curl -X POST https://jam-jam.org/api/v1/ai-music/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-F "[email protected]"
# Analyze a Spotify link
curl -X POST https://jam-jam.org/api/v1/ai-music/jobs \
-H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"url":"https://open.spotify.com/track/2JUDGXTQYGQZrVVUgq40Ke"}'
# History, current analysis, one analysis
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/history
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/jobs
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/jobs/JOB_ID
# Cancel
curl -X DELETE -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
https://jam-jam.org/api/v1/ai-music/jobs/JOB_IDコード例
curl、JavaScript、Python ですぐ実行できるサンプル。MIT ライセンスのオープンソースです。
アシスタントとMCP
アシスタントは仕様を読み、自分で呼び出しを組み立てます。公式MCPサーバーは、すぐ使える42個のツールを提供します。
AIエージェント向け
まずGET /openapi.jsonを読んでください。推奨される呼び出し順序(フォーマットの検出、送信、追跡、取得)、認証、クォータが、モデルによる解析を想定したx-agent-guideブロックに記載されています。このサイトのllms.txtには、各変換機能が個別のエントリとして列挙されています。
MCPサーバー
キーはJAM_JAM_API_KEYから読み込まれ、そのスコープで許可されたツールだけが表示されます。誰もフォローせず、何にもいいねせず、自分から何も公開しません。
詳しく
公式のModel Context Protocolサーバーは、APIをjj_で始まる42個のツールとしてアシスタントに公開します。ファイルとテキストの変換、非公開ソングブックの読み取りと整理、公開プロフィールの読み取り、ステム分離、音声解析とキュー、AI音楽の検出、マスタリングに対応しています。APIキーは環境変数JAM_JAM_API_KEYから読み込み、そのキーのスコープで許可されたツールだけを表示します。ポーリング、クォータエラー、ファイル結果の取得を代わりに処理するため、Claude Desktop、Claude Code、Cursorなどのアシスタントは、HTTPコードを一切書かずにファイルを変換したりソングブックを整理したりできます。フォロー、いいね、曲の公開を勝手に行うことはありません。
{
"mcpServers": {
"jam-jam": {
"command": "npx",
"args": ["-y", "@jam-jam/convert-mcp"],
"env": {
"JAM_JAM_API_KEY": "jj_live_xxxxxxxxxxxxxxxx"
}
}
}
}ツールと必要なスコープ 42
フォーマット、ファイル、テキスト、ジョブの状態。
jj_list_formatsスコープなしjj_convert_fileconvert:writejj_convert_textconvert:writejj_get_jobconvert:read
キーでできることと残り。
jj_check_usage
曲とプレイリスト。
jj_list_songsjj_get_songjj_list_playlistsjj_get_playlist
曲とプレイリストの作成、更新、削除。
jj_create_songjj_update_songjj_delete_songjj_create_playlistjj_update_playlistjj_delete_playlist
プロフィールカード、公開された曲とプレイリスト、フォロワーとフォロー中。
jj_get_profilejj_list_profile_songsjj_list_profile_playlistsjj_list_followersjj_list_following
対応状況、ジョブ、ファイル。
jj_stems_capabilitiesconvert:readjj_stems_separatestems:writejj_stems_get_jobconvert:readjj_stems_list_jobsconvert:readjj_stems_get_fileconvert:readjj_stems_cancel_jobstems:write
ファイルの解析、ジョブの一覧、読み取り、キャンセル。
jj_audio_analyzeaudio:writejj_queue_listqueue:readjj_queue_get_jobqueue:readjj_queue_cancel_jobaudio:write
利用可否、解析、履歴、ジョブ。
jj_ai_music_availabilityqueue:readjj_ai_music_analyzeaudio:writejj_ai_music_currentqueue:readjj_ai_music_get_jobqueue:readjj_ai_music_historyqueue:readjj_ai_music_cancel_jobaudio:write
対応状況、プリセット、レンダリング、ジョブの状態とキャンセル。
jj_mastering_capabilitiesスコープなしjj_list_mastering_presetsmastering:readjj_create_mastering_presetmastering:writejj_master_audiomastering:writejj_mastering_get_jobmastering:readjj_mastering_cancel_jobmastering:write
エンドポイントリファレンス
提供中のすべてのルートを、ファミリーごとにスコープとクォータ付きで掲載。正式な基準は完全な仕様書です。
- 変換(ジョブ) 6
- フォーマット 1
- 使用状況とクォータ 1
- ソングブック、読み取り 4
- ソングブック、書き込み 8
- ソーシャル、読み取り専用 5
- オーディオキューとステム 4
- ステム分離 6
- マスタリング 8
- AI音楽検出 7
- ヘルスと仕様 2
変換(ジョブ) 6
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| POST | /jobs変換を送信します: ファイル(multipart/form-data)、URL、またはプレーンテキスト/ChordPro(application/json)。output=stemsを指定する場合はstems:writeスコープとPremiumのAPIキーも必要で、独自のクォータがあります(UTC基準で1日200回)。 | convert:write | クォータ:変換 |
| GET | /jobs/{id}ジョブの状態(フェーズ、進捗率、ステップ)。Retry-Afterヘッダーを尊重しながらポーリングしてください。 | convert:read | クォータ:なし |
| DELETE | /jobs/{id}ジョブをキャンセルしてファイルを削除します。まだキューにあった場合のみクォータが返還されます。 | convert:write | クォータ:なし |
| GET | /jobs/{id}/eventsポーリングの代替となるServer-Sent Events: state、done、errorイベントと、接続維持用のpingイベントです。 | convert:read | クォータ:なし |
| GET | /jobs/{id}/result主要な成果物(または?artifact=で指定した成果物)をダウンロードします。ジョブ作成から24時間の間利用できます。 | convert:read | クォータ:なし |
| GET | /jobs/{id}/result/songbook曲の正規JSONピボット(コード、歌詞、構成)で、ジョブ完了後は常に取得できます。 | convert:read | クォータ:なし |
フォーマット 1
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /formatsこのサーバーが実際に提供している入力/出力の組み合わせの一覧と、その上限(maxBytes、maxPages、maxDurationS)。 | 公開(キー不要) | クォータ:なし |
使用状況とクォータ 1
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /me/usageあなたのクォータ残高(変換、読み取り、書き込み、ステム)と、あなたの権限が実際に行使できるスコープを、1回の呼び出しで取得できます。 | convert:read | クォータ:なし |
ソングブック、読み取り 4
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /me/songsあなたの非公開ソングブック内の曲を一覧表示します。不透明カーソルでページネーションされます。増分エクスポートにはupdatedSinceを使用してください。 | carnet:read | クォータ:読み取り |
| GET | /me/songs/{songId}ソングブック内の曲1曲全体を、コード・歌詞・構成込みで取得します。 | carnet:read | クォータ:読み取り |
| GET | /me/playlistsソングブック内のプレイリストを一覧表示します。フラットな構造で、曲は複数のプレイリストに属せます。ページネーションは曲と同じです。 | carnet:read | クォータ:読み取り |
| GET | /me/playlists/{playlistId}1件のプレイリストとその曲を、順序どおりに要約形式で取得します。 | carnet:read | クォータ:読み取り |
ソングブック、書き込み 8
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| POST | /me/songs曲をソングブックに追加します。変換が返すのと同じピボットペイロードです。重複を避けるためIdempotency-Keyを設定してください。 | carnet:write | クォータ:書き込み |
| PUT | /me/songs/{songId}曲を完全に置き換えます(宣言的)。まだ存在しない場合は、そのidで新規作成されます。 | carnet:write | クォータ:書き込み |
| PATCH | /me/songs/{songId}送信したフィールド(調、カポ、bpm、playlistIdsなど)のみを更新します。また、プロフィールへの曲の公開・非公開も切り替えます。 | carnet:write | クォータ:書き込み |
| DELETE | /me/songs/{songId}曲をソングブックから削除します。ソフトデリートかつべき等で、すべてのプレイリストからも外れます。 | carnet:write | クォータ:書き込み |
| POST | /me/playlistsプレイリストを作成します。songIdsは含まれる曲の順序付きリストで、送信した通りに保持されます。 | carnet:write | クォータ:書き込み |
| PUT | /me/playlists/{playlistId}プレイリストを完全に置き換えます(宣言的)。songIdsは必須です。 | carnet:write | クォータ:書き込み |
| PATCH | /me/playlists/{playlistId}プレイリストの名前変更、カバー絵文字の変更、または曲の並び順を完全に変更します。 | carnet:write | クォータ:書き込み |
| DELETE | /me/playlists/{playlistId}プレイリスト自体を削除します。曲自体はソングブックと他の所属プレイリストに残ります。 | carnet:write | クォータ:書き込み |
ソーシャル、読み取り専用 5
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /users/{handle}ハンドルによるアカウントの公開プロフィールヘッダーです。フォローしていない非公開アカウントの場合は、非公開カード(自己紹介や各種カウントなし)が返されます。 | social:read | クォータ:読み取り |
| GET | /users/{handle}/songsアカウントがプロフィールに公開した曲です。audioPlayableは、お互いにフォローし合っている場合のみtrueになります。 | social:read | クォータ:読み取り |
| GET | /users/{handle}/playlistsアカウントが公開したプレイリストです。songCountは、あなたが実際に見られるものだけをカウントします。 | social:read | クォータ:読み取り |
| GET | /me/followersあなたをフォローしているアカウントです。status=accepted(既定)またはrequestedです。 | social:read | クォータ:読み取り |
| GET | /me/followingあなたがフォローしているアカウントです。status=requestedでは、非公開アカウントへの保留中のリクエストが一覧表示されます。 | social:read | クォータ:読み取り |
オーディオキューとステム 4
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| POST | /audioすでにソングブックにある曲について、コードと歌詞の自動解析、続いてアラインメントをキューに入れます。アプリと同じキューです。songIdはあなた自身の曲である必要があります。 | audio:write | クォータ:なし |
| GET | /queueあなたのアカウントのオーディオ処理キューです: 処理中、待機中(rank付き)、そして過去7日間の完了分です。 | queue:read | クォータ:なし |
| GET | /queue/{id}オーディオキューのジョブ1件で、あなた自身のものに限られます。未知のジョブや他人のジョブに対しても同じ、区別のつかない404が返されます。 | queue:read | クォータ:なし |
| DELETE | /queue/{id}オーディオキューのジョブの1つをキャンセルします。解析がまだ完了していなかった場合のみ返還されます。 | audio:write | クォータ:なし |
ステム分離 6
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /stem-tool/capabilities呼び出し元のステム分離の利用可否、制限、モデル、クォータを確認します。 | convert:read | クォータ:なし |
| GET | /stem-tool/jobs任意のページカーソルを使って、呼び出し元の非公開の分離履歴を一覧表示します。 | convert:read | クォータ:なし |
| POST | /stem-tool/jobs音声ファイルをアップロードし、2本または4本のステムに分離します。APIキーの利用にはPremiumが必要です。 | stems:write | クォータ:ステム |
| GET | /stem-tool/jobs/{id}自分の分離ジョブの状態、進行状況、利用可能なファイルを取得します。 | convert:read | クォータ:なし |
| DELETE | /stem-tool/jobs/{id}自分の分離ジョブをキャンセルします。 | stems:write | クォータ:なし |
| GET | /stem-tool/jobs/{id}/files/{name}MP3のステムまたはZIPアーカイブをダウンロードするための短時間有効な署名付きURLを取得します。 | convert:read | クォータ:なし |
API キーで呼び出す場合、これらのルートはすべて Premium アカウントが必要です。そうでない場合は 403(api-premium-required)が返ります。呼び出し元の上限は GET /stem-tool/capabilities で確認できます。
マスタリング 8
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /mastering/capabilities上限、設定の範囲、ラウドネス目標、内蔵プリセット、レンダリング権限。 | 公開(キー不要) | クォータ:なし |
| GET | /mastering/presetsマスタリングのプリセットを一覧表示します。 | mastering:read | クォータ:なし |
| POST | /mastering/presetsマスタリングのプリセットを作成します(Idempotency-Key 必須)。 | mastering:write | クォータ:なし |
| DELETE | /mastering/presets/{id}マスタリングのプリセットを削除します。 | mastering:write | クォータ:なし |
| POST | /mastering/jobs音声をアップロードし、プリセットまたは設定でマスタリングを開始します。 | mastering:write | クォータ:マスタリング(無料は週3回、Premiumは無制限) |
| GET | /mastering/jobs/{id}マスタリング処理の状態を取得します。 | mastering:read | クォータ:なし |
| DELETE | /mastering/jobs/{id}マスタリング処理をキャンセルします。 | mastering:write | クォータ:なし |
| GET | /mastering/jobs/{id}/resultマスタリング済みの WAV をダウンロードします。 | mastering:read | クォータ:なし |
AI音楽検出 7 + 1 内部
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /ai-music/availabilityツールの利用可否、対応フォーマット、アカウントまたは訪問者の残りクォータ。 | 公開(キー不要) | クォータ:なし |
| POST | /ai-music/jobs音声ファイル、Spotifyリンク、音声への直接リンク、ISRCを送信します。未完了のジョブは1アカウントにつき1件まで。YouTubeには対応していません。 | audio:write | クォータ:AI検出 |
| GET | /ai-music/jobs進行中または最新の解析を取得します。 | queue:read | クォータ:なし |
| GET | /ai-music/jobs/{id}解析の進行を追い、結果を読みます。 | queue:read | クォータ:なし |
| DELETE | /ai-music/jobs/{id}解析をキャンセルし、一時ファイルを削除します。 | audio:write | クォータ:なし |
| GET | /ai-music/history過去90日間の非公開履歴(1ページ30件)。アカウントが必要で、音声は保存されません。 | queue:read | クォータ:なし |
| DELETE | /ai-music/history/{id}履歴からスキャンを削除します。成功した解析で消費したクォータは戻りません。 | audio:write | クォータ:なし |
| GET | /ai-music/source/{token}/{filename}検出プロバイダー専用の一時アドレスで、有効期間は最長180秒です。クライアントから呼び出すことはありません。 | 内部 | クォータ:なし |
ヘルスと仕様 2
| メソッド | パス | スコープ | クォータ |
|---|---|---|---|
| GET | /healthエンジンごと(OMR、オーディオ、ビデオなど)のサービス状態と準備状況。認証は不要です。 | 公開(キー不要) | クォータ:なし |
| GET | /openapi.jsonこの仕様を、機械可読なJSON形式で提供します。 | 公開(キー不要) | クォータ:なし |
この表と常に同期している、機械可読な完全な仕様:
https://jam-jam.org/api/v1/openapi.json OpenAPI仕様 クォータと制限
正確な残量はGET /me/usageと、各レスポンスのX-Quota-*ヘッダーで確認できます。
変換
- 無料アカウント
- 6 / 週
- Premium
- 500 / 月
- キーもセッションもなし
- 3 / 24時間
アプリのソングブック書き出しと同じカウンターです。
読み取りと書き込み
| UTC基準の1日あたり | 無料アカウント | Premium |
|---|---|---|
| 読み取り(ソングブック、プロフィール) | 2,000 | 20,000 |
| 書き込み(ソングブック) | 200 | 5,000 |
X-Read-Quota-* · X-Write-Quota-*
変換によるステム分離
POST /jobs · output=stems Premium の API キーが必要です。Premium でない場合は 403(premium-required)が返されます。
- Premium
- 200 UTC基準の1日あたり
これらのルートを呼び出すことで、送信する音声の権利を保有していることを保証したものとみなされます。
詳しく
output=stemsを指定したPOST /jobsは、vocals、accompaniment、manifest.jsonを含む.zipを返します。- 必要なスコープ:
stems:writeとconvert:write。 - 変換とは別のカウンターで、UTC の暦日ごとに集計されます(直近24時間の移動枠ではありません)。
- ステム分離ツール(
/stem-tool/*)とは別物です。こちらを API キーで使う場合は Premium アカウントが必要で、上限も別に定められています(GET /stem-tool/capabilities)。
APIキーの取得
無料のJam Jamアカウントを作成し、アプリ(モバイルまたはWeb)で設定 > APIキーを開いてキーを作成します。キーはjj_live_で始まり、表示されるのは一度だけです。すぐにコピーしてください。1アカウントにつき最大5個まで作成でき、いつでも無効化できます。
エラー
すべてのルートのすべてのエラーは、application/problem+jsonオブジェクト(RFC 9457)であり、クライアントが分岐処理に使える安定したcodeフィールドを持ちます: quota-exhausted、rate-limited、unsupported-pair、not-foundなど。完全なカタログはOpenAPIスキーマ(components.schemas.Problem)にあります。
保存期間
アップロードされたファイルと生成された結果は、ジョブ作成から24時間後に削除されます。失敗したジョブを含め、それ以上保存されるものはありません。この期間を過ぎて結果を取得しようとすると410 Goneが返されます。
オープンソースクレジット
このAPIは実在するオープンソースエンジンの上に成り立っています。誠実に利用し、名前を明記してクレジットしています:
- MuseScore 4
GPL-3.0記譜の読み込みとレンダリング、楽譜PDF - Audiveris
AGPL-3.0スキャンした楽譜の光学楽譜認識 - Tesseract OCR
Apache-2.0スキャンしたページや写真の文字認識 - faster-whisper
MIT音声からの歌詞の書き起こし - Basic Pitch
Apache-2.0音声からの音符とメロディの検出 - FluidSynth
LGPL-2.1MIDIからの伴奏レンダリング(SoundFont) - FFmpeg
LGPL-2.1 / GPL-2.0音声・動画のエンコード、フォーマット変換 - Chromium
BSD-3-Clause楽譜とコード譜のPDFレンダリング
モデルとデータ
話者検出(Studio):声紋モデル WeSpeaker ResNet34-LM、WeNet プロジェクト(github.com/wenet-e2e/wespeaker)、VoxCeleb(VGG、オックスフォード大学)で学習、ライセンス CC BY 4.0(creativecommons.org/licenses/by/4.0/)。Jam Jam による改変:重みを半精度に変換。