top of page
- 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

音声区間を切り出し文字起こし

01_BRONZE_ss_edited.png
01_SILVER_edited_edited.png
03_GOLD_edited_edited.png
bottom of page