pygpt-net 2.6.26__py3-none-any.whl → 2.6.27__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pygpt_net/CHANGELOG.txt +4 -0
- pygpt_net/__init__.py +1 -1
- pygpt_net/controller/access/voice.py +3 -5
- pygpt_net/controller/audio/audio.py +9 -6
- pygpt_net/controller/audio/ui.py +263 -0
- pygpt_net/controller/chat/common.py +17 -1
- pygpt_net/controller/theme/theme.py +4 -1
- pygpt_net/core/audio/backend/native.py +113 -79
- pygpt_net/core/audio/backend/pyaudio.py +16 -19
- pygpt_net/core/audio/backend/pygame.py +12 -15
- pygpt_net/core/audio/capture.py +10 -9
- pygpt_net/core/audio/context.py +3 -6
- pygpt_net/data/config/config.json +6 -4
- pygpt_net/data/config/models.json +2 -2
- pygpt_net/data/config/settings.json +24 -10
- pygpt_net/data/locale/locale.de.ini +2 -0
- pygpt_net/data/locale/locale.en.ini +2 -0
- pygpt_net/data/locale/locale.es.ini +2 -0
- pygpt_net/data/locale/locale.fr.ini +2 -0
- pygpt_net/data/locale/locale.it.ini +2 -0
- pygpt_net/data/locale/locale.pl.ini +3 -1
- pygpt_net/data/locale/locale.uk.ini +2 -0
- pygpt_net/data/locale/locale.zh.ini +2 -0
- pygpt_net/plugin/audio_input/simple.py +5 -10
- pygpt_net/plugin/audio_output/plugin.py +4 -17
- pygpt_net/ui/layout/chat/input.py +5 -2
- pygpt_net/ui/main.py +1 -2
- pygpt_net/ui/widget/audio/bar.py +5 -1
- pygpt_net/ui/widget/textarea/input.py +475 -50
- {pygpt_net-2.6.26.dist-info → pygpt_net-2.6.27.dist-info}/METADATA +40 -35
- {pygpt_net-2.6.26.dist-info → pygpt_net-2.6.27.dist-info}/RECORD +34 -33
- {pygpt_net-2.6.26.dist-info → pygpt_net-2.6.27.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.26.dist-info → pygpt_net-2.6.27.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.26.dist-info → pygpt_net-2.6.27.dist-info}/entry_points.txt +0 -0
|
@@ -1429,7 +1429,20 @@
|
|
|
1429
1429
|
"step": 1,
|
|
1430
1430
|
"advanced": false,
|
|
1431
1431
|
"tab": "device"
|
|
1432
|
-
},
|
|
1432
|
+
},
|
|
1433
|
+
"audio.input.timeout": {
|
|
1434
|
+
"section": "audio",
|
|
1435
|
+
"type": "int",
|
|
1436
|
+
"slider": false,
|
|
1437
|
+
"label": "settings.audio.input.timeout",
|
|
1438
|
+
"description": "settings.audio.input.timeout.desc",
|
|
1439
|
+
"value": 120,
|
|
1440
|
+
"min": 0,
|
|
1441
|
+
"multiplier": 1,
|
|
1442
|
+
"step": 1,
|
|
1443
|
+
"advanced": false,
|
|
1444
|
+
"tab": "options"
|
|
1445
|
+
},
|
|
1433
1446
|
"audio.input.stop_interval": {
|
|
1434
1447
|
"section": "audio",
|
|
1435
1448
|
"type": "int",
|
|
@@ -1444,16 +1457,17 @@
|
|
|
1444
1457
|
"advanced": false,
|
|
1445
1458
|
"tab": "options"
|
|
1446
1459
|
},
|
|
1447
|
-
"audio.input.
|
|
1460
|
+
"audio.input.continuous": {
|
|
1448
1461
|
"section": "audio",
|
|
1449
|
-
"type": "
|
|
1462
|
+
"type": "bool",
|
|
1450
1463
|
"slider": false,
|
|
1451
|
-
"label": "settings.audio.input.
|
|
1452
|
-
"description": "settings.audio.input.
|
|
1453
|
-
"value":
|
|
1454
|
-
"min":
|
|
1455
|
-
"
|
|
1456
|
-
"
|
|
1464
|
+
"label": "settings.audio.input.continuous",
|
|
1465
|
+
"description": "settings.audio.input.continuous.desc",
|
|
1466
|
+
"value": false,
|
|
1467
|
+
"min": null,
|
|
1468
|
+
"max": null,
|
|
1469
|
+
"multiplier": null,
|
|
1470
|
+
"step": null,
|
|
1457
1471
|
"advanced": false,
|
|
1458
1472
|
"tab": "options"
|
|
1459
1473
|
},
|
|
@@ -1469,7 +1483,7 @@
|
|
|
1469
1483
|
"step": null,
|
|
1470
1484
|
"advanced": false,
|
|
1471
1485
|
"tab": "options"
|
|
1472
|
-
},
|
|
1486
|
+
},
|
|
1473
1487
|
"audio.cache.enabled": {
|
|
1474
1488
|
"section": "audio",
|
|
1475
1489
|
"type": "bool",
|
|
@@ -1116,6 +1116,8 @@ settings.audio.input.backend = Backend für Audioeingabe
|
|
|
1116
1116
|
settings.audio.input.backend.desc = Wählen Sie das Backend für die Audioeingabe.
|
|
1117
1117
|
settings.audio.input.channels = Kanäle
|
|
1118
1118
|
settings.audio.input.channels.desc = Eingabekanäle, Standard: 1
|
|
1119
|
+
settings.audio.input.continuous = Kontinuierliche Audioaufnahme (Stücke)
|
|
1120
|
+
settings.audio.input.continuous.desc = Aktivieren Sie die Aufnahme in Stücken für lange Audioaufnahmen im Notizblock (Sprachnotizen).
|
|
1119
1121
|
settings.audio.input.device = Gerät für Audioeingabe
|
|
1120
1122
|
settings.audio.input.device.desc = Wählen Sie das Gerät für Mikrofoneingang.
|
|
1121
1123
|
settings.audio.input.rate = Abtastrate
|
|
@@ -1134,6 +1134,8 @@ settings.audio.input.backend = Audio Input Backend
|
|
|
1134
1134
|
settings.audio.input.backend.desc = Select the audio input backend.
|
|
1135
1135
|
settings.audio.input.channels = Channels
|
|
1136
1136
|
settings.audio.input.channels.desc = Input channels, default: 1
|
|
1137
|
+
settings.audio.input.continuous = Continuous Audio Recording (Chunks)
|
|
1138
|
+
settings.audio.input.continuous.desc = Enable recording in chunks for long audio recordings in notepad (voice notes).
|
|
1137
1139
|
settings.audio.input.device = Audio Input Device
|
|
1138
1140
|
settings.audio.input.device.desc = Select the audio device for Microphone input.
|
|
1139
1141
|
settings.audio.input.rate = Sampling Rate
|
|
@@ -1117,6 +1117,8 @@ settings.audio.input.backend = Backend para la entrada de audio
|
|
|
1117
1117
|
settings.audio.input.backend.desc = Selecciona el backend para la entrada de audio.
|
|
1118
1118
|
settings.audio.input.channels = Canaux
|
|
1119
1119
|
settings.audio.input.channels.desc = Canaux d'entrée, par défaut : 1
|
|
1120
|
+
settings.audio.input.continuous = Grabación de Audio Continua (Fragmentos)
|
|
1121
|
+
settings.audio.input.continuous.desc = Habilitar grabación en fragmentos para grabaciones de audio largas en el bloc de notas (notas de voz).
|
|
1120
1122
|
settings.audio.input.device = Dispositivo para la entrada de audio
|
|
1121
1123
|
settings.audio.input.device.desc = Selecciona el dispositivo para la entrada del micrófono.
|
|
1122
1124
|
settings.audio.input.rate = Taux d'échantillonnage
|
|
@@ -1116,6 +1116,8 @@ settings.audio.input.backend = Backend pour l'entrée audio
|
|
|
1116
1116
|
settings.audio.input.backend.desc = Sélectionnez le backend pour l'entrée audio.
|
|
1117
1117
|
settings.audio.input.channels = Canaux
|
|
1118
1118
|
settings.audio.input.channels.desc = Canaux d'entrée, par défaut : 1
|
|
1119
|
+
settings.audio.input.continuous = Enregistrement Audio Continu (Morceaux)
|
|
1120
|
+
settings.audio.input.continuous.desc = Activer l'enregistrement en morceaux pour les longs enregistrements audio dans le bloc-notes (notes vocales).
|
|
1119
1121
|
settings.audio.input.device = Périphérique pour l'entrée audio
|
|
1120
1122
|
settings.audio.input.device.desc = Sélectionnez le périphérique pour l'entrée du microphone.
|
|
1121
1123
|
settings.audio.input.rate = Taux d'échantillonnage
|
|
@@ -1116,6 +1116,8 @@ settings.audio.input.backend = Backend per l'ingresso audio
|
|
|
1116
1116
|
settings.audio.input.backend.desc = Seleziona il backend per l'ingresso audio.
|
|
1117
1117
|
settings.audio.input.channels = Canali
|
|
1118
1118
|
settings.audio.input.channels.desc = Canali di ingresso, predefinito: 1
|
|
1119
|
+
settings.audio.input.continuous = Registrazione Audio Continua (Pezzi)
|
|
1120
|
+
settings.audio.input.continuous.desc = Abilita la registrazione a pezzi per lunghe registrazioni audio nei blocchi note (note vocali).
|
|
1119
1121
|
settings.audio.input.device = Dispositivo per l'ingresso audio
|
|
1120
1122
|
settings.audio.input.device.desc = Seleziona il dispositivo per l'ingresso del microfono.
|
|
1121
1123
|
settings.audio.input.rate = Frequenza di campionamento
|
|
@@ -80,7 +80,7 @@ agent.eval.feedback = Feedback
|
|
|
80
80
|
agent.eval.next = Ponowne uruchomienie z feedbackiem
|
|
81
81
|
agent.eval.score = Ocena ewaluatora
|
|
82
82
|
agent.eval.score.good = Odpowiedź wystarczająco dobra, wychodzenie.
|
|
83
|
-
agent.evolve.generation = Generacja
|
|
83
|
+
agent.evolve.generation = Generacja
|
|
84
84
|
agent.evolve.maxgen_limit = Osiągnięto maksymalną liczbę generacji, wychodzenie.
|
|
85
85
|
agent.evolve.option.max_generations = Maksymalna liczba generacji
|
|
86
86
|
agent.evolve.option.num_parents = Liczba rodziców
|
|
@@ -1117,6 +1117,8 @@ settings.audio.input.backend = Backend dla wejścia audio
|
|
|
1117
1117
|
settings.audio.input.backend.desc = Wybierz backend dla wejścia audio.
|
|
1118
1118
|
settings.audio.input.channels = Kanały
|
|
1119
1119
|
settings.audio.input.channels.desc = Kanały wejściowe, domyślnie: 1
|
|
1120
|
+
settings.audio.input.continuous = Ciągłe Nagrywanie Dźwięku (Kawałki)
|
|
1121
|
+
settings.audio.input.continuous.desc = Włącz nagrywanie w kawałkach dla długich nagrań audio w notatniku (notatki głosowe).
|
|
1120
1122
|
settings.audio.input.device = Urządzenie do wejścia audio
|
|
1121
1123
|
settings.audio.input.device.desc = Wybierz urządzenie do wejścia mikrofonu.
|
|
1122
1124
|
settings.audio.input.rate = Częstotliwość próbkowania
|
|
@@ -1116,6 +1116,8 @@ settings.audio.input.backend = Бекенд для аудіовходу
|
|
|
1116
1116
|
settings.audio.input.backend.desc = Виберіть бекенд для аудіовходу.
|
|
1117
1117
|
settings.audio.input.channels = Канали
|
|
1118
1118
|
settings.audio.input.channels.desc = Вхідні канали, за замовчуванням: 1
|
|
1119
|
+
settings.audio.input.continuous = Безперервний Аудіозапис (Частини)
|
|
1120
|
+
settings.audio.input.continuous.desc = Увімкніть запис частинами для довгих аудіозаписів у блокноті (голосові нотатки).
|
|
1119
1121
|
settings.audio.input.device = Пристрій для аудіовходу
|
|
1120
1122
|
settings.audio.input.device.desc = Виберіть пристрій для входу мікрофону.
|
|
1121
1123
|
settings.audio.input.rate = Частота дискретизації
|
|
@@ -1116,6 +1116,8 @@ settings.audio.input.backend = 音频输入的后端
|
|
|
1116
1116
|
settings.audio.input.backend.desc = 选择音频输入的后端。
|
|
1117
1117
|
settings.audio.input.channels = 声道
|
|
1118
1118
|
settings.audio.input.channels.desc = 输入声道,默认: 1
|
|
1119
|
+
settings.audio.input.continuous = 连续音频录制(片段)
|
|
1120
|
+
settings.audio.input.continuous.desc = 启用记事本中的长音频录制分段记录(语音笔记)。
|
|
1119
1121
|
settings.audio.input.device = 音频输入的设备
|
|
1120
1122
|
settings.audio.input.device.desc = 选择用于麦克风输入的音频设备。
|
|
1121
1123
|
settings.audio.input.rate = 采样率
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
7
|
# MIT License #
|
|
8
8
|
# Created By : Marcin Szczygliński #
|
|
9
|
-
# Updated Date: 2025.08.07
|
|
9
|
+
# Updated Date: 2025.08.27 07:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import os
|
|
@@ -41,14 +41,11 @@ class Simple:
|
|
|
41
41
|
|
|
42
42
|
def switch_btn_stop(self):
|
|
43
43
|
"""Switch button to stop"""
|
|
44
|
-
self.plugin.window.
|
|
45
|
-
self.plugin.window.ui.plugin_addon['audio.input.btn'].btn_toggle.setToolTip(
|
|
46
|
-
trans('audio.speak.btn.stop.tooltip'))
|
|
44
|
+
self.plugin.window.controller.audio.ui.on_input_begin("input")
|
|
47
45
|
|
|
48
46
|
def switch_btn_start(self):
|
|
49
47
|
"""Switch button to start"""
|
|
50
|
-
self.plugin.window.
|
|
51
|
-
self.plugin.window.ui.plugin_addon['audio.input.btn'].btn_toggle.setToolTip(trans('audio.speak.btn.tooltip'))
|
|
48
|
+
self.plugin.window.controller.audio.ui.on_input_end("input")
|
|
52
49
|
|
|
53
50
|
def stop_timeout(self):
|
|
54
51
|
"""Stop timeout"""
|
|
@@ -85,10 +82,8 @@ class Simple:
|
|
|
85
82
|
# stop audio output if playing
|
|
86
83
|
self.plugin.window.controller.audio.stop_output()
|
|
87
84
|
|
|
88
|
-
# set audio
|
|
89
|
-
self.plugin.window.core.audio.capture.
|
|
90
|
-
self.plugin.window.ui.plugin_addon['audio.input.btn'].bar
|
|
91
|
-
)
|
|
85
|
+
# set audio input mode
|
|
86
|
+
self.plugin.window.core.audio.capture.set_mode("input")
|
|
92
87
|
|
|
93
88
|
# start timeout timer to prevent infinite recording
|
|
94
89
|
# disable in continuous mode
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
7
|
# MIT License #
|
|
8
8
|
# Created By : Marcin Szczygliński #
|
|
9
|
-
# Updated Date: 2025.08.
|
|
9
|
+
# Updated Date: 2025.08.27 07:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from typing import Any
|
|
@@ -250,7 +250,8 @@ class Plugin(BasePlugin):
|
|
|
250
250
|
worker.signals.stop.connect(self.handle_stop)
|
|
251
251
|
worker.signals.volume_changed.connect(self.handle_volume)
|
|
252
252
|
|
|
253
|
-
self.window.controller.audio.
|
|
253
|
+
if not self.window.controller.audio.ui.recording:
|
|
254
|
+
self.window.controller.audio.on_begin("")
|
|
254
255
|
|
|
255
256
|
backend = self.window.core.config.get("audio.output.backend", "native")
|
|
256
257
|
if backend == "native":
|
|
@@ -275,20 +276,6 @@ class Plugin(BasePlugin):
|
|
|
275
276
|
"""
|
|
276
277
|
self.window.ui.plugin_addon['audio.output'].set_status(status)
|
|
277
278
|
|
|
278
|
-
def show_stop_button(self):
|
|
279
|
-
"""Show stop button"""
|
|
280
|
-
self.window.ui.plugin_addon['audio.output'].stop.setVisible(True)
|
|
281
|
-
|
|
282
|
-
def hide_stop_button(self):
|
|
283
|
-
"""Hide stop button"""
|
|
284
|
-
self.window.ui.plugin_addon['audio.output'].stop.setVisible(False)
|
|
285
|
-
|
|
286
|
-
def stop_speak(self):
|
|
287
|
-
"""Stop speaking"""
|
|
288
|
-
self.window.ui.plugin_addon['audio.output'].stop.setVisible(False)
|
|
289
|
-
self.window.ui.plugin_addon['audio.output'].set_status('Stopped')
|
|
290
|
-
self.window.ui.plugin_addon['audio.output'].stop_audio()
|
|
291
|
-
|
|
292
279
|
def stop_audio(self):
|
|
293
280
|
"""
|
|
294
281
|
Event: AUDIO_OUTPUT_STOP
|
|
@@ -336,4 +323,4 @@ class Plugin(BasePlugin):
|
|
|
336
323
|
|
|
337
324
|
:param volume: volume level
|
|
338
325
|
"""
|
|
339
|
-
self.window.
|
|
326
|
+
self.window.controller.audio.ui.on_output_volume_change(int(volume))
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
7
|
# MIT License #
|
|
8
8
|
# Created By : Marcin Szczygliński #
|
|
9
|
-
# Updated Date: 2025.08.
|
|
9
|
+
# Updated Date: 2025.08.27 07:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from functools import partial
|
|
@@ -149,6 +149,9 @@ class Input:
|
|
|
149
149
|
self.window.ui.plugin_addon['audio.input'] = AudioInput(self.window)
|
|
150
150
|
self.window.ui.plugin_addon['audio.input.btn'] = AudioInputButton(self.window)
|
|
151
151
|
|
|
152
|
+
self.window.ui.plugin_addon['audio.input'].setVisible(False)
|
|
153
|
+
self.window.ui.plugin_addon['audio.input.btn'].setVisible(False)
|
|
154
|
+
|
|
152
155
|
grid = QGridLayout()
|
|
153
156
|
|
|
154
157
|
center_layout = QHBoxLayout()
|
|
@@ -204,7 +207,7 @@ class Input:
|
|
|
204
207
|
|
|
205
208
|
nodes['input.stop_btn'] = QPushButton(trans("input.btn.stop"))
|
|
206
209
|
nodes['input.stop_btn'].setVisible(False)
|
|
207
|
-
nodes['input.stop_btn'].clicked.connect(controller.
|
|
210
|
+
nodes['input.stop_btn'].clicked.connect(controller.chat.common.handle_stop)
|
|
208
211
|
|
|
209
212
|
nodes['input.update_btn'] = QPushButton(trans("input.btn.update"))
|
|
210
213
|
nodes['input.update_btn'].setVisible(False)
|
pygpt_net/ui/main.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
7
|
# MIT License #
|
|
8
8
|
# Created By : Marcin Szczygliński #
|
|
9
|
-
# Updated Date: 2025.08.
|
|
9
|
+
# Updated Date: 2025.08.27 07:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import os
|
|
@@ -254,7 +254,6 @@ class MainWindow(QMainWindow, QtStyleTools):
|
|
|
254
254
|
"""
|
|
255
255
|
message = message if isinstance(message, str) else str(message)
|
|
256
256
|
self.dispatch(KernelEvent(KernelEvent.STATUS, {"status": message}))
|
|
257
|
-
del message # free memory
|
|
258
257
|
|
|
259
258
|
@Slot(str)
|
|
260
259
|
def update_state(self, state: str):
|
pygpt_net/ui/widget/audio/bar.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
7
|
# MIT License #
|
|
8
8
|
# Created By : Marcin Szczygliński #
|
|
9
|
-
# Updated Date: 2025.08.
|
|
9
|
+
# Updated Date: 2025.08.27 07:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from PySide6.QtCore import Qt
|
|
@@ -25,6 +25,8 @@ class InputBar(QWidget):
|
|
|
25
25
|
|
|
26
26
|
:param level: level
|
|
27
27
|
"""
|
|
28
|
+
if self._level == level:
|
|
29
|
+
return
|
|
28
30
|
self._level = level
|
|
29
31
|
self.update()
|
|
30
32
|
|
|
@@ -69,6 +71,8 @@ class OutputBar(QWidget):
|
|
|
69
71
|
|
|
70
72
|
:param level: level
|
|
71
73
|
"""
|
|
74
|
+
if self._level == level:
|
|
75
|
+
return
|
|
72
76
|
self._level = level
|
|
73
77
|
self.update()
|
|
74
78
|
|