Skip to content

Commit aa04b4d

Browse files
committed
Change default max queue size of answer to 1, and enable to change the value by user.
Organize constructor params of ChatAIStreamer.
1 parent c1d92a3 commit aa04b4d

6 files changed

Lines changed: 39 additions & 19 deletions

File tree

README.md

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,18 @@ Extention of [ChatAIStream](https://github.com/GeneralYadoc/ChatAIStream) for vo
7272
system_role = "You are a cheerful assistant who speek English and can get conversation exciting with user."
7373
)
7474
75+
# Set params of streamer
76+
streamer_params=casr.streamerParams(
77+
voice_generator=myVoiceGenerator(),
78+
answer_with_voice_cb=answer_with_voice_cb
79+
)
80+
7581
# Create ChatAIStreamer instance.
7682
ai_streamer =casr.ChatAIStreamer(
7783
casr.params(
7884
stream_params=stream_params,
7985
ai_params=ai_params,
80-
voice_generator=myVoiceGenerator(),
81-
answer_with_voice_cb=answer_with_voice_cb
86+
streamer_params=streamer_params
8287
)
8388
)
8489
@@ -177,16 +182,18 @@ Extention of [ChatAIStream](https://github.com/GeneralYadoc/ChatAIStream) for vo
177182
# You can choose other language by its 'lang=' argument like 'ja'.
178183
# If you want to change language, Please change the assignment for system role of ai params also.
179184
# The instance isn't necessary for English generator.
180-
voice_generator=gasr.GttsGenerator(lang='en')
185+
streamer_params=gasr.streamerParams(
186+
voice_generator=gasr.GttsGenerator(lang='en'),
187+
answer_with_voice_cb=answer_with_voice_cb
188+
)
181189

182190
# Create GttsAIStreamer instance.
183191
# 'voice_generator=' is omittable for English generator.
184192
ai_streamer =gasr.GttsAIStreamer(
185193
gasr.params(
186194
stream_params=stream_params,
187195
ai_params=ai_params,
188-
voice_generator=voice_generator,
189-
answer_with_voice_cb=answer_with_voice_cb
196+
streamer_params=streamer_params
190197
)
191198
)
192199

@@ -257,16 +264,17 @@ Extention of [ChatAIStream](https://github.com/GeneralYadoc/ChatAIStream) for vo
257264
| ask_cb | user message given to ChatGPT is thrown to this callback | None |
258265
| max_messages_in_context | Max messages in context given to ChatGPT | 20 |
259266
| answer_cb | ChatGPT answer is thrown to this callback | None |
260-
| answer_with_voice_cb | ChatGPT answer is thrown to this callback with voice data created by your get method of voiceGenerator | None |
261267
| max_queue_size | Max slots of internal queue (0 is no limit) | 10 |
262268
| model | Model of AI to be used. | None |
263269
| max_tokens_per_request | Max number of tokens which can be contained in a request | 256 |
264270
| interval_sec | Interval of ChatGPT API call | 20.0 \[sec\] |
265271

266-
### voiceGenerator
272+
### streamerParams
267273
| name | description | default |
268274
|------|------------|---------|
269-
| voice_generator | the instance of inherited class of voiceGenerater made by you | - |
275+
| voice_generator | the instance of inherited class of voiceGenerater made by you | None |
276+
| answer_with_voice_cb | ChatGPT answer is thrown to this callback with voice data created by your get method of voiceGenerator | None |
277+
| max_queue_size | max size of internal queue which stocks GPT answer which will be given to voice Generator | 1 |
270278

271279
### Notice
272280
- Please refer [pytchat README](https://github.com/taizan-hokuto/pytchat) to know the type of YouTube Chat item used by get_item_cb, pre_filter_cb and post filter_cb.

samples/sample.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,18 @@ def answer_with_voice_cb(user_message, completion, voice):
6666
# You can choose other language by its 'lang=' argument like 'ja'.
6767
# If you want to change language, Please change the assignment for system role of ai params also.
6868
# The instance isn't necessary for English generator.
69-
voice_generator=gasr.GttsGenerator(lang='en')
69+
streamer_params=gasr.streamerParams(
70+
voice_generator=gasr.GttsGenerator(lang='en'),
71+
answer_with_voice_cb=answer_with_voice_cb
72+
)
7073

7174
# Create GttsAIStreamer instance.
7275
# 'voice_generator=' is omittable for English generator.
7376
ai_streamer =gasr.GttsAIStreamer(
7477
gasr.params(
7578
stream_params=stream_params,
7679
ai_params=ai_params,
77-
voice_generator=voice_generator,
78-
answer_with_voice_cb=answer_with_voice_cb
80+
streamer_params=streamer_params
7981
)
8082
)
8183

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def _requires_from_file(filename):
1212

1313
setup(
1414
name="chatai-streamer",
15-
version="1.0.0",
15+
version="2.0.0",
1616
license="MIT",
1717
description="ChatGPT answer aloud YouTube chat messages.",
1818
author="General Yadoc",

src/ChatAIStreamer.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,22 @@
1010
userMessage = cas.userMessage
1111
aiParams = cas.aiParams
1212

13+
1314
class voiceGenerator(ABC):
1415
@abstractmethod
1516
def generate(self, text):
1617
pass
1718

1819
@dataclass
19-
class params(cas.params):
20+
class streamerParams():
2021
voice_generator : voiceGenerator = None
2122
answer_with_voice_cb: Callable[[userMessage, any, any], None] = None
23+
max_queue_size : int = 1
24+
25+
26+
@dataclass
27+
class params(cas.params):
28+
streamer_params : streamerParams = streamerParams()
2229

2330
@dataclass
2431
class answerSlot():
@@ -48,13 +55,13 @@ def my_answer_cb(self, user_message, completion):
4855

4956
def __init__(self, params):
5057
self.__keeping_connection = False
51-
self.voice_generator = params.voice_generator
58+
self.voice_generator = params.streamer_params.voice_generator
5259
self.__answer_queue = None
5360
self.__answer_thread = None
5461
if (self.voice_generator):
55-
self.__answer_queue = queue.Queue(5)
62+
self.__answer_queue = queue.Queue(params.streamer_params.max_queue_size)
5663
self.__answer_thread = threading.Thread(target=self.__generateVoice, daemon=True)
57-
self.answer_with_voice_cb = params.answer_with_voice_cb
64+
self.answer_with_voice_cb = params.streamer_params.answer_with_voice_cb
5865

5966
self.answer_cb = params.ai_params.answer_cb
6067
params.ai_params.answer_cb = self.my_answer_cb

src/GttsAIStreamer.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,14 @@ def generate(self, text):
6161
# return voice with translated text.
6262
return text_en, voice
6363

64-
# Extend params to hold voiceGenerator instance.
64+
# Extend streamerParams and params to hold voiceGenerator instance.
6565
# voice_generator is defaultly intialized with English voiceGenerator.
6666
@dataclass
67-
class params(casr.params):
67+
class streamerParams(casr.streamerParams):
6868
voice_generator : casr.voiceGenerator = GttsGenerator()
69+
@dataclass
70+
class params(casr.params):
71+
streamer_params : streamerParams = streamerParams()
6972

7073
# VoicePlayer class which plays the voice generated by GttsGenerator.
7174
class VoicePlayer(threading.Thread):

src/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
from .ChatAIStreamer import *
22
from .GttsAIStreamer import *
33

4-
__version__ = '1.0.0'
4+
__version__ = '2.0.0'

0 commit comments

Comments
 (0)