top of page
- Script Code -

dofile(reaper.AZ_GetLuaInitPath())

require("reaper_AZSTOKE_BRONZE")  

require("reaper_AZSTOKE_SILVER")   

require("reaper_AZSTOKE_GOLD")   


function Transcription(track)


   trscTrack = reaper.AZ_InsertUniqueChildTrack(track, "Transcription")

   

   itemList = reaper.AZ_GetMediaItemListInTrackItem(track)

   

   -- モデルを読み込み

   ctx = reaper.AZ_TRSC_LoadModel()

   

   for i, item in pairs(itemList) do

      

      -- 文字起こし実行

      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)

   

   reaper.AZ_ShowMessageBox_Info("文字起こしが終了しました", "", reaper.AZ_WindowType_OK())

   

   return trscTrack


end


C_id = "B"

C_serif = "C"

C_trsc = "D"

R_header = 2


tableRnage = "3:100,B"


function OutputExcel(excelDocPath, voiceTrack)


   charID = reaper.AZ_GetTrackItemName(voiceTrack)

   childrenList, count = reaper.AZ_GetTrackItemChildList(voiceTrack)

   

   trscTrack = childrenList[1]

   

   itemList = reaper.AZ_GetMediaItemListInTrackItem(trscTrack)

   

   excelDoc = reaper.AZ_Excel_OpenFile(excelDocPath)

   

   if reaper.AZ_GetErrorCode() ~= 0 then

       reaper.AZ_ShowMessageBox_Error("Excelファイルの読み込みに失敗しました。", "Error", reaper.AZ_WindowType_OK())

       reaper.AZ_Excel_CloseFile(excelDoc)

       return

   end

   

   reaper.AZ_Excel_SaveDocument(excelDoc)

   

   if reaper.AZ_GetErrorCode() ~= 0 then

       reaper.AZ_ShowMessageBox_Error("Excelファイルを閉じてください。", "Error", reaper.AZ_WindowType_OK())

       reaper.AZ_Excel_CloseFile(excelDoc)        

       return

   end

   

   worksheet = reaper.AZ_Excel_OpenWorksheet(excelDoc, charID)

   

   if reaper.AZ_GetErrorCode() == 53 then

       reaper.AZ_ShowMessageBox_Error("シートが存在しません。", "Error", reaper.AZ_WindowType_OK())

       reaper.AZ_Excel_CloseFile(excelDoc)

       return

   end

   

   rows = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, voiceID, C_id, tableRnage)

   

   for i, noteItem in pairs(itemList) do

       region = reaper.AZ_GetRegionMarkerListMediaItem(noteItem)[1]

       

       voiceID = region["Name"]

       

       trsc = reaper.AZ_GetMediaItemNotes(noteItem)

        

       exists = false

       for j, row in pairs(rows["Cells"]) do

       

           if row[C_id] == voiceID then

               reaper.AZ_Excel_SetCellValue(worksheet, C_trsc .. j, trsc)

               Msg(voiceID .. "文字起こしをに書き込みました。")

               exists = true

           end

       end

       

       if exists == false then

           Msg(voiceID .. "は存在しません。")

       end

   end

   

   reaper.AZ_Excel_SaveDocument(excelDoc)

   reaper.AZ_Excel_CloseFile(excelDoc)

end


function main()


   excelDocPath = "D:\\reapdock\\voice\\Scripts.xlsx"


   retval, inputList = reaper.AZ_GetUserInputList("", 1, "台本パス", excelDocPath)

   if retval == false then return end

   

   excelDocPath = inputList[1]


   voiceTrack = reaper.AZ_GetTrackItemSelect(0, 0, 1)

   

   if voiceTrack == nil then

       reaper.AZ_ShowMessageBox_Error("トラックが選択されていません。", "Error", reaper.AZ_WindowType_OK())

       return

   end


   -- リージョン作成

   itemList = reaper.AZ_GetMediaItemListInTrackItem(voiceTrack)

   for i, item in pairs(itemList) do

       reaper.AZ_AddRegionMarkerMediaItem(item)

   end

   

   

   Transcription(voiceTrack)

   

   OutputExcel(excelDocPath, voiceTrack)

   

   

end


main()V

- Warm Up -

  • Arrange voice media in Reaper

  • Prepare an Excel file for the script

- Script Detail -

dofile(reaper.AZ_GetLuaInitPath())

require("reaper_AZSTOKE_BRONZE")  

require("reaper_AZSTOKE_SILVER")   

require("reaper_AZSTOKE_GOLD")   


・ Import RIGDOCKS


******** AZSTOKE_TRSC_OutputToProject参照 ******


function Transcription(track)


    trscTrack = reaper.AZ_InsertUniqueChildTrack(track, "Transcription")

    

    itemList = reaper.AZ_GetMediaItemListInTrackItem(track)

    

    -- モデルを読み込み

    ctx = reaper.AZ_TRSC_LoadModel()

    

    for i, item in pairs(itemList) do

       

       -- 文字起こし実行

       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)

    

    reaper.AZ_ShowMessageBox_Info("文字起こしが終了しました", "", reaper.AZ_WindowType_OK())

    

    return trscTrack


end


******** AZSTOKE_TRSC_OutputToProject参照 ここまで ******


C_id = "B"

C_serif = "C"

C_trsc = "D"


・ Define the Excel columns


R_header = 2


・ Define the Excel header row


tableRnage = "3:100,B"


・ Define the Excel search range (column B from row 3 to row 100)


function OutputExcel(excelDocPath, voiceTrack)


・ Function to output transcription results to Excel


    scriptTable = {}


・ Initialize the script table


    charID = reaper.AZ_GetTrackItemName(voiceTrack)


・ Get the track name as the character ID


    childrenList, count = reaper.AZ_GetTrackItemChildList(voiceTrack)

    

    trscTrack = childrenList[1]


・ Get the child track that contains the transcription results

    

    itemList = reaper.AZ_GetMediaItemListInTrackItem(trscTrack)


・ Get the item list of transcription results

    

    excelDoc = reaper.AZ_Excel_OpenFile(excelDocPath)


・ Open the Excel file

    

    if reaper.AZ_GetErrorCode() ~= 0 then

        reaper.AZ_ShowMessageBox_Error("Excelファイルの読み込みに失敗しました。", "Error", reaper.AZ_WindowType_OK())

        reaper.AZ_Excel_CloseFile(excelDoc)

        return

    end


・ If the Excel file could not be opened, show an error message and exit

    

    reaper.AZ_Excel_SaveDocument(excelDoc)

    

    if reaper.AZ_GetErrorCode() ~= 0 then

        reaper.AZ_ShowMessageBox_Error("Excelファイルを閉じてください。", "Error", reaper.AZ_WindowType_OK())

        reaper.AZ_Excel_CloseFile(excelDoc)        

        return

    end


・ If the Excel file cannot be saved, show an error message and exit

    

    worksheet = reaper.AZ_Excel_OpenWorksheet(excelDoc, charID)


・ Open the sheet with the same name as the character ID

    

    if reaper.AZ_GetErrorCode() == 53 then

        reaper.AZ_ShowMessageBox_Error("シートが存在しません。", "Error", reaper.AZ_WindowType_OK())

        reaper.AZ_Excel_CloseFile(excelDoc)

        return

    end


・ If the sheet does not exist, show an error message and exit


    

    rows = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, voiceID, C_id, tableRnage)


・ Search the Excel sheet for the row containing the same value as the character ID

    

    for i, noteItem in pairs(itemList) do


・ Loop over the item list of transcription results


        region = reaper.AZ_GetRegionMarkerListMediaItem(noteItem)[1]

        

        voiceID = region["Name"]


・ Get the name of the region attached to the item (this is assumed to be the line ID)

        

        trsc = reaper.AZ_GetMediaItemNotes(noteItem)


・ Get the transcription result from the item's note

         

        exists = false


・ Flag for whether the line ID exists in the Excel sheet


        for j, row in pairs(rows["Cells"]) do

        

            if row[C_id] == voiceID then


・ Get the lines from the Excel sheet

                

                reaper.AZ_Excel_SetCellValue(worksheet, C_trsc .. j, trsc)


・ Write the transcription results into the Excel sheet

                

                Msg(voiceID .. "文字起こしを書き込みました。")


・ Show the write-complete message

                                

                exists = true


・ Set a flag that the line ID exists

            end

        end

        

        if exists == false then

            Msg(voiceID .. "は存在しません。")

        end


・ If the line ID does not exist, show a message

    end

    

    reaper.AZ_Excel_SaveDocument(excelDoc)

    reaper.AZ_Excel_CloseFile(excelDoc)


・ Save and close the Excel file

    

end


function main()


******** AZSTOKE_TRSC_OutputToProject参照 ******


    excelDocPath = "D:\\reapdock\\voice\\Scripts.xlsx"


    retval, inputList = reaper.AZ_GetUserInputList("", 1, "台本パス", excelDocPath)

    if retval == false then return end

    

    excelDocPath = inputList[1]


    voiceTrack = reaper.AZ_GetTrackItemSelect(0, 0, 1)

    

    if voiceTrack == nil then

        reaper.AZ_ShowMessageBox_Error("トラックが選択されていません。", "Error", reaper.AZ_WindowType_OK())

        return

    end


    -- リージョン作成

    itemList = reaper.AZ_GetMediaItemListInTrackItem(voiceTrack)

    for i, item in pairs(itemList) do

        reaper.AZ_AddRegionMarkerMediaItem(item)

    end

    

    

    Transcription(voiceTrack)



******** AZSTOKE_TRSC_OutputToProject参照 ここまで ******


    

    scriptTable = OutputExcel(excelDocPath, voiceTrack)


・ Output the transcription results to Excel and get the script table

    

end


main()

- API LINK -
- API LINK -

Transcription

AZSTOKE_TRSC_OutputToExcel

Write transcription results to Excel

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