Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
accessibility_movie_2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵心治
accessibility_movie_2
Commits
4f04de43
Commit
4f04de43
authored
Nov 03, 2022
by
xuanweiace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug
parent
d87a7437
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
69 additions
and
38 deletions
+69
-38
constant.py
constant.py
+2
-0
detect_with_ocr.py
detect_with_ocr.py
+2
-1
main_window.py
main_window.py
+58
-36
management.py
management.py
+7
-1
No files found.
constant.py
View file @
4f04de43
...
...
@@ -2,6 +2,7 @@
class
Content
:
StartTimeColumn
=
0
AsideColumnNumber
=
2
SpeedColumnNumber
=
3
ActivateColumns
=
[
2
,
3
]
# ColumnCount = 3
ObjectName
=
"all_tableWidget"
...
...
@@ -10,6 +11,7 @@ class Content:
class
Aside
:
StartTimeColumn
=
0
AsideColumnNumber
=
3
SpeedColumnNumber
=
4
ActivateColumns
=
[
3
,
4
]
ObjectName
=
"pb_tableWidget"
TimeFormatColumns
=
[
0
,
1
]
...
...
detect_with_ocr.py
View file @
4f04de43
...
...
@@ -305,7 +305,8 @@ def add_to_list(mainWindow: MainWindow, element_type: str, li: list):
st_time_sec
,
ed_time_sec
,
subtitle
,
suggest
=
li
st_time_sec
,
ed_time_sec
=
str
(
st_time_sec
),
str
(
ed_time_sec
)
speed
=
'1.00(4字/秒)'
# 默认使用配置文件中的语速
speed
=
mainWindow
.
projectContext
.
speaker_speed
aside
=
""
i
=
len
(
mainWindow
.
projectContext
.
all_elements
)
if
element_type
==
"字幕"
:
...
...
main_window.py
View file @
4f04de43
...
...
@@ -139,6 +139,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self
.
all_tableWidget
.
setEditTriggers
(
QAbstractItemView
.
NoEditTriggers
)
self
.
pb_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
writeHistory
)
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
rewriteHistory
)
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
generate_audio_slot
)
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
write2ProjectFromAside
)
self
.
zm_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
change_video_time
)
...
...
@@ -508,8 +509,15 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self
.
pb_tableWidget_idx
=
0
self
.
zm_tableWidget_idx
=
0
self
.
set_table_to_window
()
def
set_table_to_window
(
self
,
need_refresh_all
=
True
):
self
.
projectContext
.
initial_ing
=
True
"""
把projectContext里的内容呈现在UI上。
只有在初始化工程时,need_refresh_all = True,此时才需要initial_ing置为true。
initial_ing为true时,不会生成音频,不会写入历史记录
"""
if
need_refresh_all
:
self
.
projectContext
.
initial_ing
=
True
header
=
self
.
projectContext
.
header
subtitle_list
=
self
.
projectContext
.
subtitle_list
aside_list
=
self
.
projectContext
.
aside_list
...
...
@@ -547,9 +555,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self
.
pb_tableWidget_idx
=
len
(
aside_list
)
self
.
zm_tableWidget_idx
=
len
(
subtitle_list
)
self
.
projectContext
.
initial_ing
=
False
if
need_refresh_all
:
self
.
projectContext
.
initial_ing
=
False
def
setElememtToTable
(
self
,
table
:
QTableWidget
,
elem
:
Element
,
idx
:
int
):
elem_list
=
elem
.
to_list
()
...
...
@@ -646,10 +653,21 @@ class MainWindow(QMainWindow, Ui_MainWindow):
#
# self.projectContext.history_push(row, text, text)
def
rewriteHistory
(
self
,
item
):
def
generate_audio_slot
(
self
,
item
):
"""
在set表格的时候(初始化),不会触发。只有双击修改的时候才会触发
"""
if
self
.
projectContext
.
initial_ing
==
True
:
return
if
item
is
None
:
print
(
"WRONG!!!! item Is None"
)
return
row
=
item
.
row
()
# 获取行数
col
=
item
.
column
()
# 获取列数 注意是column而不是col
# 只有更新语速或者更新旁白,才需要重新生成音频
if
col
not
in
constant
.
Aside
.
ActivateColumns
:
return
# 合成这一段语音
from
speech_synthesis
import
speech_synthesis
,
Speaker
,
choose_speaker
print
(
"self.projectContext.excel_path:"
,
self
.
projectContext
.
excel_path
)
...
...
@@ -657,47 +675,46 @@ class MainWindow(QMainWindow, Ui_MainWindow):
print
(
"self.pb_tableWidget.itemAt(item.row(), 0).text()"
,
self
.
projectContext
.
aside_list
[
item
.
row
()]
.
st_time_sec
)
wav_path
=
audio_dir
+
'/tmp/
%.2
f.wav'
%
float
(
self
.
projectContext
.
aside_list
[
item
.
row
()]
.
st_time_sec
)
print
(
"wav_path:"
,
wav_path
)
speed_info
=
self
.
projectContext
.
speaker_speed
# speed_info = self.projectContext.speaker_speed
# 使用私有 语速
speed_info
=
self
.
pb_tableWidget
.
item
(
int
(
row
),
constant
.
Aside
.
SpeedColumnNumber
)
.
text
()
speaker_info
=
self
.
projectContext
.
speaker_info
speed
=
float
(
speed_info
.
split
(
'('
)[
0
])
speaker_name
=
speaker_info
.
split
(
","
)[
0
]
speaker
=
self
.
projectContext
.
choose_speaker
(
speaker_name
)
text
=
self
.
pb_tableWidget
.
item
(
int
(
row
),
constant
.
Aside
.
AsideColumnNumber
)
.
text
()
t
=
RunThread
(
funcName
=
speech_synthesis
,
args
=
(
item
.
text
()
,
wav_path
,
speaker
,
speed
),
args
=
(
text
,
wav_path
,
speaker
,
speed
),
name
=
"speech_synthesis"
)
t
.
setDaemon
(
True
)
t
.
start
()
def
rewriteHistory
(
self
,
item
):
if
self
.
projectContext
.
initial_ing
==
True
:
return
if
item
is
None
:
print
(
"WRONG!!!! item Is None"
)
return
row
=
item
.
row
()
# 获取行数
col
=
item
.
column
()
# 获取列数 注意是column而不是col
text
=
item
.
text
()
# 获取内容
if
self
.
can_write_history
==
False
:
self
.
can_write_history
=
True
return
# print("re writeHistory")
if
item
is
None
:
print
(
"WRONG!!!! item Is None"
)
if
col
!=
constant
.
Aside
.
AsideColumnNumber
:
return
opt
=
self
.
projectContext
.
history_pop
()
if
opt
==
None
:
# 刚打开表格的时候,会触发这个槽函数,此时opt肯定是None
return
# 抛出一个可能的异常
if
row
!=
opt
.
row
:
print
(
"[rewriteHistory] Warning!!!row="
,
row
,
", old_row="
,
opt
.
row
,
", [row != opt.row]="
,
row
!=
opt
.
row
)
else
:
row
=
item
.
row
()
# 获取行数
col
=
item
.
column
()
# 获取列数 注意是column而不是col哦
text
=
item
.
text
()
# 获取内容
if
col
!=
constant
.
Aside
.
AsideColumnNumber
:
return
opt
=
self
.
projectContext
.
history_pop
()
if
opt
==
None
:
# 刚打开表格的时候,会触发这个槽函数,此时opt肯定是None
return
# 抛出一个可能的异常
if
row
!=
opt
.
row
:
print
(
"[rewriteHistory] Warning!!!row="
,
row
,
", old_row="
,
opt
.
row
,
", [row != opt.row]="
,
row
!=
opt
.
row
)
else
:
self
.
projectContext
.
history_push
(
opt
.
row
,
opt
.
old_str
,
text
)
self
.
projectContext
.
history_push
(
opt
.
row
,
opt
.
old_str
,
text
)
# def rewriteHistoryFromContent(self, item):
# print("re rewriteHistoryFromContent")
...
...
@@ -726,7 +743,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def
write2ProjectFromAside
(
self
,
item
):
if
self
.
projectContext
.
initial_ing
==
True
:
return
print
(
"write2ProjectFromAside"
)
if
item
is
None
:
print
(
"WRONG!!!! item Is None"
)
return
...
...
@@ -734,14 +750,20 @@ class MainWindow(QMainWindow, Ui_MainWindow):
row
=
item
.
row
()
# 获取行数
col
=
item
.
column
()
# 获取列数 注意是column而不是col哦
text
=
item
.
text
()
# 获取内容
if
col
!=
constant
.
Aside
.
AsideColumnNumber
:
if
col
not
in
constant
.
Aside
.
ActivateColumns
:
return
self
.
projectContext
.
refresh_aside
(
row
,
text
)
# 更新【字幕旁白】这个tab里的字
# 更新【字幕旁白】这个tab里的字,如果是语速,那就更新语速这一列,如果是旁白,那就更新旁白这一列
start_time
=
self
.
pb_tableWidget
.
item
(
int
(
row
),
constant
.
Aside
.
StartTimeColumn
)
.
text
()
start_time
=
utils
.
trans_to_seconds
(
start_time
)
idx
=
self
.
projectContext
.
aside_subtitle_2contentId
(
Element
(
str
(
start_time
),
0
,
0
,
0
,
0
))
self
.
all_tableWidget
.
setItem
(
int
(
idx
),
constant
.
Content
.
AsideColumnNumber
,
QTableWidgetItem
(
text
))
if
col
==
constant
.
Aside
.
AsideColumnNumber
:
self
.
all_tableWidget
.
setItem
(
int
(
idx
),
constant
.
Content
.
AsideColumnNumber
,
QTableWidgetItem
(
text
))
self
.
projectContext
.
refresh_aside
(
row
,
text
)
elif
col
==
constant
.
Aside
.
SpeedColumnNumber
:
self
.
all_tableWidget
.
setItem
(
int
(
idx
),
constant
.
Content
.
SpeedColumnNumber
,
QTableWidgetItem
(
text
))
self
.
projectContext
.
refresh_aside_speed
(
row
,
text
)
# def write2ProjectFromContent(self, item):
# print("write2ProjectFromContent")
# if item is None:
...
...
@@ -828,10 +850,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# 其实end_time目前是没啥用的,可以删掉了
if
idx
!=
len
(
self
.
projectContext
.
all_elements
):
self
.
add_line_operation_slot
(
idx
,
str
(
cur_time
),
self
.
projectContext
.
all_elements
[
idx
+
1
]
.
st_time_sec
,
""
,
"插入旁白,推荐字数为0"
,
""
)
""
,
"插入旁白,推荐字数为0"
,
""
,
self
.
projectContext
.
speaker_speed
)
else
:
self
.
add_line_operation_slot
(
idx
,
str
(
cur_time
),
str
(
cur_time
+
1
),
""
,
"插入旁白,推荐字数为0"
,
""
)
""
,
"插入旁白,推荐字数为0"
,
""
,
self
.
projectContext
.
speaker_speed
)
def
calculate_element_row
(
self
,
cur_time
):
idx
=
0
...
...
management.py
View file @
4f04de43
...
...
@@ -135,7 +135,7 @@ class ProjectContext:
self
.
excel_sheet_name
=
"旁白插入位置建议"
self
.
history_records
=
[]
self
.
records_pos
=
0
#是否处于初始化中
#是否处于初始化中
:在set_table_to_window时为True,主要用来做undo和redo记录操作历史的时候用到该变量,值为False才进行undo等操作。
self
.
initial_ing
=
False
self
.
speakers
=
[]
...
...
@@ -166,6 +166,7 @@ class ProjectContext:
with
open
(
'./conf.ini'
,
'w'
,
encoding
=
'utf-8'
)
as
f
:
f
.
writelines
([
self
.
speaker_info
+
'
\n
'
,
self
.
speaker_speed
])
def
setVideoPath
(
self
,
video_path
):
self
.
video_path
=
video_path
def
setExcelPath
(
self
,
excel_path
):
...
...
@@ -194,6 +195,11 @@ class ProjectContext:
if
not
self
.
initial_ing
:
save_excel_to_to_path
(
self
.
all_elements
,
self
.
excel_path
,
self
.
header
,
self
.
excel_sheet_name
)
def
refresh_aside_speed
(
self
,
row
,
speed
:
str
)
->
None
:
self
.
aside_list
[
int
(
row
)]
.
speed
=
speed
if
not
self
.
initial_ing
:
save_excel_to_to_path
(
self
.
all_elements
,
self
.
excel_path
,
self
.
header
,
self
.
excel_sheet_name
)
def
refresh_element
(
self
,
row
,
aside
:
str
):
self
.
all_elements
[
int
(
row
)]
.
aside
=
aside
if
not
self
.
initial_ing
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment