Skip to content

Commit 384d4a5

Browse files
committed
added await to tests, and async functions to audio
1 parent c2581bc commit 384d4a5

File tree

3 files changed

+55
-59
lines changed

3 files changed

+55
-59
lines changed

jigsawstack/audio.py

Lines changed: 38 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,9 @@ def __init__(
7979
@overload
8080
def speech_to_text(self, params: SpeechToTextParams) -> SpeechToTextResponse: ...
8181
@overload
82-
def speech_to_text(
83-
self, file: bytes, options: Optional[SpeechToTextParams] = None
84-
) -> SpeechToTextResponse: ...
82+
def speech_to_text(self, file: bytes, options: Optional[SpeechToTextParams] = None) -> SpeechToTextResponse: ...
8583

86-
def speech_to_text(
87-
self,
88-
blob: Union[SpeechToTextParams, bytes],
89-
options: Optional[SpeechToTextParams] = None,
90-
) -> SpeechToTextResponse:
84+
def speech_to_text(self, blob: Union[SpeechToTextParams, bytes], options: Optional[SpeechToTextParams] = None) -> SpeechToTextResponse:
9185
if isinstance(
9286
blob, dict
9387
): # If params is provided as a dict, we assume it's the first argument
@@ -104,14 +98,7 @@ def speech_to_text(
10498
content_type = options.get("content_type", "application/octet-stream")
10599
headers = {"Content-Type": content_type}
106100

107-
resp = Request(
108-
config=self.config,
109-
path=path,
110-
params=options,
111-
data=blob,
112-
headers=headers,
113-
verb="post",
114-
).perform_with_content()
101+
resp = Request(config=self.config, path=path, params=options, data=blob, headers=headers, verb="post").perform_with_content()
115102
return resp
116103

117104
def text_to_speech(self, params: TextToSpeechParams) -> TextToSpeechResponse:
@@ -126,43 +113,23 @@ def text_to_speech(self, params: TextToSpeechParams) -> TextToSpeechResponse:
126113

127114
def speaker_voice_accents(self) -> TextToSpeechResponse:
128115
path = "/ai/tts"
129-
resp = Request(
130-
config=self.config,
131-
path=path,
132-
params={},
133-
verb="get",
134-
).perform_with_content()
116+
resp = Request(config=self.config, path=path, params={}, verb="get").perform_with_content()
135117
return resp
136118

137119
def create_clone(self, params: TTSCloneParams) -> TextToSpeechResponse:
138120
path = "/ai/tts/clone"
139-
resp = Request(
140-
config=self.config,
141-
path=path,
142-
params=cast(Dict[Any, Any], params),
143-
verb="post",
144-
).perform_with_content()
121+
resp = Request(config=self.config, path=path, params=cast(Dict[Any, Any], params), verb="post").perform_with_content()
145122

146123
return resp
147124

148125
def get_clones(self, params: GetTTSVoiceClonesParams) -> TextToSpeechResponse:
149126
path = "/ai/tts/clone"
150-
resp = Request(
151-
config=self.config,
152-
path=path,
153-
params=cast(Dict[Any, Any], params),
154-
verb="get",
155-
).perform_with_content()
127+
resp = Request(config=self.config, path=path, params=cast(Dict[Any, Any], params), verb="get").perform_with_content()
156128
return resp
157129

158130
def delete_clone(self, voice_id: str) -> TextToSpeechResponse:
159131
path = f"/ai/tts/clone/{voice_id}"
160-
resp = Request(
161-
config=self.config,
162-
path=path,
163-
params={},
164-
verb="delete",
165-
).perform_with_content()
132+
resp = Request(config=self.config, path=path, params={}, verb="delete").perform_with_content()
166133
return resp
167134

168135

@@ -183,9 +150,7 @@ def __init__(
183150
)
184151

185152
@overload
186-
async def speech_to_text(
187-
self, params: SpeechToTextParams
188-
) -> SpeechToTextResponse: ...
153+
async def speech_to_text(self, params: SpeechToTextParams) -> SpeechToTextResponse: ...
189154
@overload
190155
async def speech_to_text(
191156
self, file: bytes, options: Optional[SpeechToTextParams] = None
@@ -239,3 +204,33 @@ async def speaker_voice_accents(self) -> TextToSpeechResponse:
239204
verb="get",
240205
).perform_with_content()
241206
return resp
207+
208+
async def create_clone(self, params: TTSCloneParams) -> TextToSpeechResponse:
209+
path = "/ai/tts/clone"
210+
resp = await AsyncRequest(
211+
config=self.config,
212+
path=path,
213+
params=cast(Dict[Any, Any], params),
214+
verb="post"
215+
).perform_with_content()
216+
return resp
217+
218+
async def get_clones(self, params: GetTTSVoiceClonesParams) -> TextToSpeechResponse:
219+
path = "/ai/tts/clone"
220+
resp = await AsyncRequest(
221+
config=self.config,
222+
path=path,
223+
params=cast(Dict[Any, Any], params),
224+
verb="get"
225+
).perform_with_content()
226+
return resp
227+
228+
async def delete_clone(self, voice_id: str) -> TextToSpeechResponse:
229+
path = f"/ai/tts/clone/{voice_id}"
230+
resp = await AsyncRequest(
231+
config=self.config,
232+
path=path,
233+
params={},
234+
verb="delete"
235+
).perform_with_content()
236+
return resp

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name="jigsawstack",
9-
version="0.2.2",
9+
version="0.2.3",
1010
description="JigsawStack - The AI SDK for Python",
1111
long_description=open("README.md", encoding="utf8").read(),
1212
long_description_content_type="text/markdown",

tests/test_audio.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ async def _test():
1818

1919
"""Test converting text to speech"""
2020
try:
21-
response = client.audio.text_to_speech(
21+
response = await client.audio.text_to_speech(
2222
{
2323
"text": "Hello world, this is a test of the JigsawStack text to speech API."
2424
}
@@ -33,16 +33,17 @@ async def _test():
3333

3434

3535
def test_speaker_voice_accents():
36-
client = AsyncJigsawStack()
36+
async def _test():
37+
client = AsyncJigsawStack()
3738

38-
"""Test getting available voice accents"""
39-
try:
40-
response = client.audio.speaker_voice_accents()
41-
print("Speaker voice accents response:", response)
42-
assert response["success"] == True
39+
"""Test getting available voice accents"""
40+
try:
41+
response = await client.audio.speaker_voice_accents()
42+
print("Speaker voice accents response:", response)
43+
assert response["success"] == True
4344

44-
except Exception as e:
45-
print(f"Error in speaker voice accents test: {e}")
45+
except Exception as e:
46+
print(f"Error in speaker voice accents test: {e}")
4647

4748

4849
def test_create_clone():
@@ -54,7 +55,7 @@ async def _test():
5455
audio_url = (
5556
"https://jigsawstack.com/audio/test.mp3" # Replace with an actual URL
5657
)
57-
clone_response_url = client.audio.create_clone(
58+
clone_response_url = await client.audio.create_clone(
5859
{"url": audio_url, "name": "Test Voice Clone URL"}
5960
)
6061

@@ -81,7 +82,7 @@ async def _test():
8182
"""Test getting voice clones"""
8283
try:
8384
# List available voice clones
84-
clones_response = client.audio.get_clones({"limit": 10, "page": 1})
85+
clones_response = await client.audio.get_clones({"limit": 10, "page": 1})
8586

8687
assert clones_response["success"] == True
8788

@@ -96,13 +97,13 @@ async def _test():
9697
client = AsyncJigsawStack()
9798
"""Test getting a voice clone"""
9899
try:
99-
create_clone_response = client.audio.create_clone(
100+
create_clone_response = await client.audio.create_clone(
100101
{"name": "Test Voice Clone URL", "file_store_key": "hello_audio"}
101102
)
102-
clones = client.audio.get_clones()
103+
clones = await client.audio.get_clones({"limit": 10, "page": 1})
103104
print("Clones:", clones)
104-
clone_id = clones[0]["id"]
105-
delete_clone_response = client.audio.delete_clone(clone_id)
105+
clone_id = clones["data"][0]["id"]
106+
delete_clone_response = await client.audio.delete_clone(clone_id)
106107
print("Delete clone response:", delete_clone_response)
107108
assert delete_clone_response["success"] == True
108109

0 commit comments

Comments
 (0)