- Script Code -
dofile(reaper.AZ_GetLuaInitPath())
require("reaper_AZSTOKE_BRONZE")
require("reaper_AZSTOKE_SILVER")
function CutSilent(mediaItem)
cutItemList = {}
silentSectionList = reaper.AZ_GetAudioSectionListInMediaItem(mediaItem, 0.2)
currentItem = mediaItem
prevSplitPos = 0
for i, section in pairs(silentSectionList) do
leftItem, rigthItem = reaper.AZ_SplitMediaItem(currentItem, section["StartTime"] - prevSplitPos)
prevSplitPos = section["StartTime"]
reaper.AZ_DeleteMediaItem(leftItem)
leftItem, rigthItem = reaper.AZ_SplitMediaItem(rigthItem, section["EndTime"] - prevSplitPos)
prevSplitPos = section["EndTime"]
currentItem = rigthItem
table.insert(cutItemList, leftItem)
end
reaper.AZ_DeleteMediaItem(currentItem)
return cutItemList
end
function Transcription(mediaItemList)
-- モデルを読み込み
ctx = reaper.AZ_TRSC_LoadModel()
for i, item in pairs(mediaItemList) do
track = reaper.GetMediaItemTrack(item)
trscTrack = reaper.AZ_InsertUniqueChildTrack(track, "Transcription")
-- 文字起こし実行
text = reaper.AZ_TRSC_FullForMediaItem(ctx, item, "ja")
itemStart = reaper.AZ_GetMediaItemStartTimeSeconds(item)
itemLength = reaper.AZ_GetMediaItemLength(item)
reaper.AZ_InsertNoteItemToTrack(trscTrack, itemStart, itemLength, text)
end
-- モデルを解放
reaper.AZ_TRSC_ReleaseModel(ctx)
return
end
function main()
mediaItemList = reaper.AZ_GetSelectedMediaItemList(0)
cutAllItemList = {}
for i, item in pairs(mediaItemList) do
cutItemList = CutSilent(item)
for j, cutItem in pairs(cutItemList) do
table.insert(cutAllItemList, cutItem)
end
end
Transcription(cutAllItemList)
reaper.AZ_ShowMessageBox_Info("音声の切り出しが完了しました。", "", reaper.AZ_WindowType_OK())
end
main()
- Warm Up -
Reaperに音声ファイルを配置しておく
- Script Detail -
dofile(reaper.AZ_GetLuaInitPath())
require("reaper_AZSTOKE_BRONZE")
require("reaper_AZSTOKE_SILVER")
・ RIGDOCKSをインポート
function CutSilent(mediaItem)
・ 音声の無音部分を切り出す関数
cutItemList = {}
silentSectionList = reaper.AZ_GetAudioSectionListInMediaItem(mediaItem, 0.2)
・ 音声の無音部分を取得(0.2秒以上の無音部分を検出)
currentItem = mediaItem
prevSplitPos = 0
・ 現在のアイテムと前回の分割位置を初期化
for i, section in pairs(silentSectionList) do
・ 無音部分のリストをループ
leftItem, rigthItem = reaper.AZ_SplitMediaItem(currentItem, section["StartTime"] - prevSplitPos)
・ 無音部分の開始位置でアイテムを分割し、左側のアイテムと右側のアイテムを取得
prevSplitPos = section["StartTime"]
・ 前回の分割位置を更新
reaper.AZ_DeleteMediaItem(leftItem)
・ 左側のアイテムは無音部分なので削除
leftItem, rigthItem = reaper.AZ_SplitMediaItem(rigthItem, section["EndTime"] - prevSplitPos)
・ 右側のアイテムを無音部分の終了位置で分割し、左側のアイテムと右側のアイテムを取得
prevSplitPos = section["EndTime"]
・ 前回の分割位置を更新
currentItem = rigthItem
・ 現在のアイテムを右側のアイテムに更新(次のループでこのアイテムを分割するため)
table.insert(cutItemList, leftItem)
・ 切り出したアイテムをリストに追加
end
reaper.AZ_DeleteMediaItem(currentItem)
・ 最後に残ったアイテムも削除(無音部分の最後のアイテム)
return cutItemList
・ 切り出したアイテムのリストを返す
end
function Transcription(mediaItemList)
・ 文字起こしを実行する関数
-- モデルを読み込み
ctx = reaper.AZ_TRSC_LoadModel()
・ モデルを読み込む
for i, item in pairs(mediaItemList) do
・ メディアイテムのリストをループ
track = reaper.GetMediaItemTrack(item)
・ アイテムのトラックを取得
trscTrack = reaper.AZ_InsertUniqueChildTrack(track, "Transcription")
・ トラックに文字起こし用の子トラックを追加
-- 文字起こし実行
text = reaper.AZ_TRSC_FullForMediaItem(ctx, item, "ja")
・ アイテムに対して文字起こしを実行(日本語で)
itemStart = reaper.AZ_GetMediaItemStartTimeSeconds(item)
itemLength = reaper.AZ_GetMediaItemLength(item)
・ アイテムの開始時間と長さを取得
reaper.AZ_InsertNoteItemToTrack(trscTrack, itemStart, itemLength, text)
・ 文字起こしの結果をノートアイテムとしてトラックに挿入
end
-- モデルを解放
reaper.AZ_TRSC_ReleaseModel(ctx)
・ モデルを解放
return
end
function main()
mediaItemList = reaper.AZ_GetSelectedMediaItemList(0)
・ 選択されているメディアイテムのリストを取得
cutAllItemList = {}
・ 切り出したアイテムを格納するリストを初期化
for i, item in pairs(mediaItemList) do
cutItemList = CutSilent(item)
・ 各アイテムに対して無音部分を切り出す関数を呼び出し、切り出したアイテムのリストを取得
for j, cutItem in pairs(cutItemList) do
table.insert(cutAllItemList, cutItem)
end
・ 切り出したアイテムを全てのアイテムのリストに追加
end
Transcription(cutAllItemList)
・ 切り出したアイテムのリストに対して文字起こしを実行
reaper.AZ_ShowMessageBox_Info("音声の切り出しが完了しました。", "", reaper.AZ_WindowType_OK())
・ 処理が完了したことをユーザーに通知
end
main()
・ メイン関数を呼び出して処理を開始
- API LINK -
- API LINK -
Transcription
AZSTOKE_TRSC_CutSilent
音声区間を切り出し文字起こし




