- 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













