#ADX2 로봇이 소리 개수와 자 합계 획득
개시하다
사운드를 수록할 때 사운드별로 얼마나 되는지 알고 싶을 때ADX2 로봇 기능 해봤어요.
스크립트 내용
대기열 주석
대기열의 주석에는 검색 키워드가 포함되어 있으며 문자열이 포함되어 있으면 계수 대상이 됩니다.
주제 밖의 말, 댓글에 이런 글을 넣는 것도 귀찮아서 자동화하고 싶어요.
(이런 파형에 대한 연출원 정보 같은 정보는 excel과 GSS에서 별도로 관리한다)
대기열 길이
파형의 길이는 대기열에 등록된 첫 번째 파형 구역만 측정합니다.
(여러 개 포함 여부 등은 고려하지 않음)
길이를 열심히 잡는 게 쉽지 않아요.
다음과 같은 상황을 고려할 수 있다
- 간격에 따라 길이도 변경됩니다.
- 재생 속도가 다르면 길이도 달라져요
- 순환 파형이 있으면 길이에 기준(데이터 길이인지 실제 재생 시간이 필요한지)
- 작업, 대기열 링크 등이 있으면 이전 내용을 추적해야 합니다.
- 덩어리가 있으면 길이를 원하는 게 뭔지 모호해
- 선택기, 무작위 궤도 재생, 재생 확립 등 재생으로 인해 길이가 달라지는 원인이 있을 때 어떻게 하나.
등, 용도에 따라 필요한 처리가 바뀔 수 있다고 생각합니다.
이번에는 발성의 대상을 겨냥하여 다양한 접기를 진행하였다.
언어 대응
언어에 대응하는 파형은 언어에 따라 참고할 파형 구역을 다시 검색해야 한다.
폴더 구성은 이렇습니다.
경로에 포함된 폴더 이름을 바꾸어 대응합니다.
스크립트에서
language = "ja"
그나저나
language = "en"
영어 파형의 길이를 얻습니다.
각본
CountWaveLength.py
# --Description:[tatmos]キューのコメントに特定文字があるものをカウントし、総尺を出力する
import sys
import cri.atomcraft.project
import cri.atomcraft.project as acproject
import cri.atomcraft.debug as acdebug
import cri.atomcraft.preview as acpreview
# 選択しているキューシートを得る
selected_CueSheets = acproject.get_selected_objects("CueSheet")["data"]
if not selected_CueSheets :
acdebug.warning("解析するキューシートを選択してください.")
sys.exit()
cues = list()
#キューを取得
for cusheet in selected_CueSheets:
acdebug.log("cusheet Path:\"{0}\"".format(acproject.get_object_path(cusheet)["data"] ))
#キューを集める
cues = acproject.find_objects(cusheet, "Cue")["data"]
language = "ja"
languageFolderJa = "/ja/"
languageFolderEn = "/en/"
#キューのコメントに特定文字が含まれていたら個数と尺を足す
def CheckLength(targetName):
#acdebug.log("Name:\"{0}\"".format(targetName ))
count = 0
length = 0
for cue in cues:
if targetName in acproject.get_value(cue, "Comment")["data"]:
count+=1
#長さを得る
waveformRegions = acproject.find_objects(cue, "WaveformRegion")["data"]
#リンクされているマテリアルを取得
tmplinkMaterial = acproject.get_value(waveformRegions[0], "LinkMaterial")["data"]
tmplinkMaterialPath = acproject.get_object_path(tmplinkMaterial)["data"]
#acdebug.log("Target Path:\"{0}\"".format(tmplinkMaterialPath ))
linkMaterialPath = tmplinkMaterialPath
#言語フォルダーのマテリアルパスに変更
if language == "ja":
linkMaterialPath = tmplinkMaterialPath.replace(languageFolderEn,languageFolderJa)
else:
linkMaterialPath = tmplinkMaterialPath.replace(languageFolderJa,languageFolderEn)
#言語フォルダーのマテリアルに変更
resultMaterial = cri.atomcraft.project.get_object_from_path(linkMaterialPath)
#acdebug.log("resultMaterial :\"{0}\"".format(resultMaterial["succeed"] ))
#acdebug.log("resultMaterial :\"{0}\"".format(resultMaterial["data"] ))
if resultMaterial["data"]:
#acdebug.log("resultMaterial :\"{0}\"".format(linkMaterialPath ))
linkMaterial = resultMaterial["data"]
else:
#acdebug.warning("Not Found Target Path:\"{0}\"".format(linkMaterialPath ))
linkMaterial = cri.atomcraft.project.get_object_from_path(tmplinkMaterialPath)["data"] #みつからない時
#波形の長さを計算
samplingRate = acproject.get_value(linkMaterial, "SamplingRate")["data"]
sampleFrames = acproject.get_value(linkMaterial, "SampleFrames")["data"]
length+= float(sampleFrames)/float(samplingRate)
acdebug.log("Name:\"{0}\" Count:\"{1}\" Length:\"{2:.2f}\" {3}".format(targetName,count,length,language))
CheckLength("クロエ")
CheckLength("ノア")
CheckLength("ジュリィ")
CheckLength("アオバ")
CheckLength("コーコ")
CheckLength("ヤマト")
CheckLength("デイター")
CheckLength("アニマ")
실행하면 이런 느낌으로 로그에 출력됩니다.
끝말
어떤 말을 하려면, 분석 도구와 비교적 가깝다.
이런 것들을 미리 준비해두면 일본어와 영어의 길이 성향이 얼마나 다르거나 말하는 사람마다 비교할 수 있어 편리하다.
다른 방법으로 뭘 조사하고 싶을 때도 활용할 수 있다.
총자를 알고 싶을 때 수동으로 하면 귀찮아진다.ADX2 로봇 기능은 매우 어렵다.
Reference
이 문제에 관하여(#ADX2 로봇이 소리 개수와 자 합계 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tatmos/items/adc0e5d559be580e20c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
파형의 길이는 대기열에 등록된 첫 번째 파형 구역만 측정합니다.
(여러 개 포함 여부 등은 고려하지 않음)
길이를 열심히 잡는 게 쉽지 않아요.
다음과 같은 상황을 고려할 수 있다
- 간격에 따라 길이도 변경됩니다.
- 재생 속도가 다르면 길이도 달라져요
- 순환 파형이 있으면 길이에 기준(데이터 길이인지 실제 재생 시간이 필요한지)
- 작업, 대기열 링크 등이 있으면 이전 내용을 추적해야 합니다.
- 덩어리가 있으면 길이를 원하는 게 뭔지 모호해
- 선택기, 무작위 궤도 재생, 재생 확립 등 재생으로 인해 길이가 달라지는 원인이 있을 때 어떻게 하나.
등, 용도에 따라 필요한 처리가 바뀔 수 있다고 생각합니다.
이번에는 발성의 대상을 겨냥하여 다양한 접기를 진행하였다.
언어 대응
언어에 대응하는 파형은 언어에 따라 참고할 파형 구역을 다시 검색해야 한다.
폴더 구성은 이렇습니다.
경로에 포함된 폴더 이름을 바꾸어 대응합니다.
스크립트에서
language = "ja"
그나저나
language = "en"
영어 파형의 길이를 얻습니다.
각본
CountWaveLength.py
# --Description:[tatmos]キューのコメントに特定文字があるものをカウントし、総尺を出力する
import sys
import cri.atomcraft.project
import cri.atomcraft.project as acproject
import cri.atomcraft.debug as acdebug
import cri.atomcraft.preview as acpreview
# 選択しているキューシートを得る
selected_CueSheets = acproject.get_selected_objects("CueSheet")["data"]
if not selected_CueSheets :
acdebug.warning("解析するキューシートを選択してください.")
sys.exit()
cues = list()
#キューを取得
for cusheet in selected_CueSheets:
acdebug.log("cusheet Path:\"{0}\"".format(acproject.get_object_path(cusheet)["data"] ))
#キューを集める
cues = acproject.find_objects(cusheet, "Cue")["data"]
language = "ja"
languageFolderJa = "/ja/"
languageFolderEn = "/en/"
#キューのコメントに特定文字が含まれていたら個数と尺を足す
def CheckLength(targetName):
#acdebug.log("Name:\"{0}\"".format(targetName ))
count = 0
length = 0
for cue in cues:
if targetName in acproject.get_value(cue, "Comment")["data"]:
count+=1
#長さを得る
waveformRegions = acproject.find_objects(cue, "WaveformRegion")["data"]
#リンクされているマテリアルを取得
tmplinkMaterial = acproject.get_value(waveformRegions[0], "LinkMaterial")["data"]
tmplinkMaterialPath = acproject.get_object_path(tmplinkMaterial)["data"]
#acdebug.log("Target Path:\"{0}\"".format(tmplinkMaterialPath ))
linkMaterialPath = tmplinkMaterialPath
#言語フォルダーのマテリアルパスに変更
if language == "ja":
linkMaterialPath = tmplinkMaterialPath.replace(languageFolderEn,languageFolderJa)
else:
linkMaterialPath = tmplinkMaterialPath.replace(languageFolderJa,languageFolderEn)
#言語フォルダーのマテリアルに変更
resultMaterial = cri.atomcraft.project.get_object_from_path(linkMaterialPath)
#acdebug.log("resultMaterial :\"{0}\"".format(resultMaterial["succeed"] ))
#acdebug.log("resultMaterial :\"{0}\"".format(resultMaterial["data"] ))
if resultMaterial["data"]:
#acdebug.log("resultMaterial :\"{0}\"".format(linkMaterialPath ))
linkMaterial = resultMaterial["data"]
else:
#acdebug.warning("Not Found Target Path:\"{0}\"".format(linkMaterialPath ))
linkMaterial = cri.atomcraft.project.get_object_from_path(tmplinkMaterialPath)["data"] #みつからない時
#波形の長さを計算
samplingRate = acproject.get_value(linkMaterial, "SamplingRate")["data"]
sampleFrames = acproject.get_value(linkMaterial, "SampleFrames")["data"]
length+= float(sampleFrames)/float(samplingRate)
acdebug.log("Name:\"{0}\" Count:\"{1}\" Length:\"{2:.2f}\" {3}".format(targetName,count,length,language))
CheckLength("クロエ")
CheckLength("ノア")
CheckLength("ジュリィ")
CheckLength("アオバ")
CheckLength("コーコ")
CheckLength("ヤマト")
CheckLength("デイター")
CheckLength("アニマ")
실행하면 이런 느낌으로 로그에 출력됩니다.
끝말
어떤 말을 하려면, 분석 도구와 비교적 가깝다.
이런 것들을 미리 준비해두면 일본어와 영어의 길이 성향이 얼마나 다르거나 말하는 사람마다 비교할 수 있어 편리하다.
다른 방법으로 뭘 조사하고 싶을 때도 활용할 수 있다.
총자를 알고 싶을 때 수동으로 하면 귀찮아진다.ADX2 로봇 기능은 매우 어렵다.
Reference
이 문제에 관하여(#ADX2 로봇이 소리 개수와 자 합계 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tatmos/items/adc0e5d559be580e20c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
CountWaveLength.py
# --Description:[tatmos]キューのコメントに特定文字があるものをカウントし、総尺を出力する
import sys
import cri.atomcraft.project
import cri.atomcraft.project as acproject
import cri.atomcraft.debug as acdebug
import cri.atomcraft.preview as acpreview
# 選択しているキューシートを得る
selected_CueSheets = acproject.get_selected_objects("CueSheet")["data"]
if not selected_CueSheets :
acdebug.warning("解析するキューシートを選択してください.")
sys.exit()
cues = list()
#キューを取得
for cusheet in selected_CueSheets:
acdebug.log("cusheet Path:\"{0}\"".format(acproject.get_object_path(cusheet)["data"] ))
#キューを集める
cues = acproject.find_objects(cusheet, "Cue")["data"]
language = "ja"
languageFolderJa = "/ja/"
languageFolderEn = "/en/"
#キューのコメントに特定文字が含まれていたら個数と尺を足す
def CheckLength(targetName):
#acdebug.log("Name:\"{0}\"".format(targetName ))
count = 0
length = 0
for cue in cues:
if targetName in acproject.get_value(cue, "Comment")["data"]:
count+=1
#長さを得る
waveformRegions = acproject.find_objects(cue, "WaveformRegion")["data"]
#リンクされているマテリアルを取得
tmplinkMaterial = acproject.get_value(waveformRegions[0], "LinkMaterial")["data"]
tmplinkMaterialPath = acproject.get_object_path(tmplinkMaterial)["data"]
#acdebug.log("Target Path:\"{0}\"".format(tmplinkMaterialPath ))
linkMaterialPath = tmplinkMaterialPath
#言語フォルダーのマテリアルパスに変更
if language == "ja":
linkMaterialPath = tmplinkMaterialPath.replace(languageFolderEn,languageFolderJa)
else:
linkMaterialPath = tmplinkMaterialPath.replace(languageFolderJa,languageFolderEn)
#言語フォルダーのマテリアルに変更
resultMaterial = cri.atomcraft.project.get_object_from_path(linkMaterialPath)
#acdebug.log("resultMaterial :\"{0}\"".format(resultMaterial["succeed"] ))
#acdebug.log("resultMaterial :\"{0}\"".format(resultMaterial["data"] ))
if resultMaterial["data"]:
#acdebug.log("resultMaterial :\"{0}\"".format(linkMaterialPath ))
linkMaterial = resultMaterial["data"]
else:
#acdebug.warning("Not Found Target Path:\"{0}\"".format(linkMaterialPath ))
linkMaterial = cri.atomcraft.project.get_object_from_path(tmplinkMaterialPath)["data"] #みつからない時
#波形の長さを計算
samplingRate = acproject.get_value(linkMaterial, "SamplingRate")["data"]
sampleFrames = acproject.get_value(linkMaterial, "SampleFrames")["data"]
length+= float(sampleFrames)/float(samplingRate)
acdebug.log("Name:\"{0}\" Count:\"{1}\" Length:\"{2:.2f}\" {3}".format(targetName,count,length,language))
CheckLength("クロエ")
CheckLength("ノア")
CheckLength("ジュリィ")
CheckLength("アオバ")
CheckLength("コーコ")
CheckLength("ヤマト")
CheckLength("デイター")
CheckLength("アニマ")
실행하면 이런 느낌으로 로그에 출력됩니다.끝말
어떤 말을 하려면, 분석 도구와 비교적 가깝다.
이런 것들을 미리 준비해두면 일본어와 영어의 길이 성향이 얼마나 다르거나 말하는 사람마다 비교할 수 있어 편리하다.
다른 방법으로 뭘 조사하고 싶을 때도 활용할 수 있다.
총자를 알고 싶을 때 수동으로 하면 귀찮아진다.ADX2 로봇 기능은 매우 어렵다.
Reference
이 문제에 관하여(#ADX2 로봇이 소리 개수와 자 합계 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tatmos/items/adc0e5d559be580e20c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(#ADX2 로봇이 소리 개수와 자 합계 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tatmos/items/adc0e5d559be580e20c2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)