15 Commits
v52 ... v61

Author SHA1 Message Date
Andrew Stein
81cdf05152 Reduced unneeded code bloat 2023-11-15 18:28:08 -05:00
Andrew Stein
6e5ae633a6 Updated POM version. 2023-11-15 18:09:57 -05:00
Andrew Stein
a6163fd67f Improved getEndpoint() changes of query parameter handling. 2023-11-15 18:09:41 -05:00
Andrew Stein
26a4ab1fa4 Removed former query parameter implementation in ElevenNetworkUtil class. (It has since been replaced by ElevenLabsRequest changes) 2023-11-15 18:09:25 -05:00
Andrew Stein
72f35c14b7 Fixed inconsistency with new getQueryParameters() inherited function. 2023-11-15 18:08:01 -05:00
Andrew Stein
90a092aa81 Fixed bug in output format. (Should've been lower case) 2023-11-15 18:07:34 -05:00
Andrew Stein
02d7ec0685 Added default model setting in ElevenLabs 2023-11-15 18:07:16 -05:00
Andrew Stein
75f1c40f59 Updating Jackson version to remove vulnerability warnings. 2023-11-15 17:49:49 -05:00
Andrew Stein
3ac42a330b Updated pom to stable 2023-11-15 17:42:12 -05:00
Andrew Stein
f4fe38166b Updated latest version. 2023-11-15 17:41:29 -05:00
Andrew Stein
3e2458b482 Readme updated & some polymorphic changes to Snapshots. 2023-11-15 17:40:52 -05:00
Andrew Stein
334a903c83 Pushing new POM version to fix action. 2023-11-15 16:57:34 -05:00
Andrew Stein
d7a710e197 Connected APIs with new models. 2023-11-15 16:52:22 -05:00
Andrew Stein
15db53e81e Connected APIs with new models. 2023-11-15 16:52:03 -05:00
Andrew Stein
bc6ee1306f Optimized imports. 2023-11-15 16:44:17 -05:00
52 changed files with 517 additions and 336 deletions

252
README.md
View File

@@ -16,7 +16,7 @@ To add `elevenlabs-api` to your Maven project, use:
<dependency>
<groupId>net.andrewcpu</groupId>
<artifactId>elevenlabs-api</artifactId>
<version>2.1</version>
<version>2.7.2</version>
</dependency>
```
The most up-to date package information can be found on the [Packages tab](https://github.com/AndrewCPU/elevenlabs-api/packages/)
@@ -32,50 +32,13 @@ To access your ElevenLabs API key, head to the [official website](https://eleven
To set up your ElevenLabs API key, you must register it with the ElevenLabsAPI Java API like below:
```java
ElevenLabs.setApiKey("YOUR_API_KEY_HERE");
ElevenLabs.setDefaultModel("eleven_monolingual_v1"); // Optional, defaults to: "eleven_monolingual_v1"
```
*For any public repository security, you should store your API key in an environment variable, or external from your source code.*
- - -
<!-- TOC -->
### Table of Contents
* [Getting Started](#getting-started)
* [Installation](#installation)
* [Setting up your API Key](#setting-up-your-api-key)
* [Voices](#voices)
* [Accessing your List of Available Voices](#accessing-your-list-of-available-voices)
* [Accessing the Default Voice Settings](#accessing-the-default-voice-settings)
* [Getting a Voice by ID](#getting-a-voice-by-id)
* [Deleting a voice](#deleting-a-voice)
* [Retrieving an Updated VoiceSettings for a Voice](#retrieving-an-updated-voicesettings-for-a-voice)
* [Updating the VoiceSettings for a Voice](#updating-the-voicesettings-for-a-voice)
* [Editing a Voice](#editing-a-voice)
* [Creating a Voice](#creating-a-voice)
* [Generating Audio](#generating-audio)
* [Samples](#samples)
* [Accessing Voice Samples](#accessing-voice-samples)
* [Downloading a Sample](#downloading-a-sample)
* [Deleting a Sample](#deleting-a-sample)
* [History](#history)
* [Getting Generation History](#getting-generation-history)
* [Getting a History Item](#getting-a-history-item)
* [Downloading History](#downloading-history)
* [Deleting a HistoryItem](#deleting-a-historyitem)
* [Requesting the Voice for a HistoryItem](#requesting-the-voice-for-a-historyitem)
* [Downloading a HistoryItem Audio](#downloading-a-historyitem-audio)
* [User Management](#user-management)
* [Getting your Subscription](#getting-your-subscription)
* [Getting your User](#getting-your-user)
* [Exceptions](#exceptions)
* [*ElevenLabsAPINotInitiatedException*](#elevenlabsapinotinitiatedexception)
* [*ElevenLabsValidationException*](#elevenlabsvalidationexception)
* [Misc](#misc)
* [Links to ElevenLabs](#links-to-elevenlabs)
* [**ElevenLabs Website**: https://elevenlabs.io](#elevenlabs-website--httpselevenlabsio)
* [**ElevenLabs API Documentation**: https://api.elevenlabs.io/docs](#elevenlabs-api-documentation--httpsapielevenlabsiodocs)
<!-- TOC -->
## Links to ElevenLabs
### **ElevenLabs Website**: https://elevenlabs.io
### **ElevenLabs API Documentation**: https://api.elevenlabs.io/docs
@@ -163,23 +126,201 @@ builder.withLabel("accent", "American");
voice = builder.create();
```
### Generating Audio
### Generating Audio (TTS + STS)
To generate an audio file with a given `Voice`, you can utilize the `Voice#generate(...)` functions.
Depending on how you access your `Voice`, (with or without settings), will decide whether you can use the implicit `voiceSettings` or if you have to specify the `VoiceSettings` object to use. Unless explicitly requesting the `Voice` without settings, every `Voice` object SHOULD contain its default `VoiceSettings`.
```java
Voice voice;
File file = voice.generate(String text);
File file = voice.generate(String text, VoiceSettings settings);
File file = voice.generate(String text, String model, VoiceSettings settings);
File file = voice.generate(String text, String model);
InputStream inputStream = voice.generateStream(String text);
InputStream inputStream = voice.generateStream(String text, VoiceSettings settings);
InputStream inputStream = voice.generateStream(String text, String model, VoiceSettings settings);
InputStream inputStream = voice.generateStream(String text, String model);
Voice voice;
File file = voice.generate("Hello world!", "my_favorite_model");
...
//Available Functions:
public File generate(String text, String model);
public File generate(String text, String model, VoiceSettings settings);
public File generate(String text, String model, VoiceSettings settings, GeneratedAudioOutputFormat outputFormat, StreamLatencyOptimization streamLatencyOptimization);
public File generate(String text, String model, VoiceSettings settings, GeneratedAudioOutputFormat outputFormat);
public File generate(String text, VoiceSettings settings, GeneratedAudioOutputFormat outputFormat);
public File generate(String text, VoiceSettings settings, StreamLatencyOptimization streamLatencyOptimization);
public File generate(String text, VoiceSettings settings, GeneratedAudioOutputFormat outputFormat, StreamLatencyOptimization streamLatencyOptimization);
public File generate(String text, GeneratedAudioOutputFormat outputFormat, StreamLatencyOptimization streamLatencyOptimization);
public File generate(String text, StreamLatencyOptimization streamLatencyOptimization);
public File generate(String text, VoiceSettings settings);
public File generate(String text);
public InputStream generateStream(String text, String model);
public InputStream generateStream(String text, String model, VoiceSettings settings);
public InputStream generateStream(String text, VoiceSettings settings);
public InputStream generateStream(String text);
public InputStream generateStream(String text, String model, GeneratedAudioOutputFormat generatedAudioOutputFormat, StreamLatencyOptimization streamLatencyOptimization);
public InputStream generateStream(String text, String model, GeneratedAudioOutputFormat generatedAudioOutputFormat, StreamLatencyOptimization streamLatencyOptimization, VoiceSettings settings);
public InputStream generateStream(String text, VoiceSettings settings, GeneratedAudioOutputFormat generatedAudioOutputFormat, StreamLatencyOptimization streamLatencyOptimization);
public InputStream generateStream(String text, GeneratedAudioOutputFormat generatedAudioOutputFormat, StreamLatencyOptimization streamLatencyOptimization);
public InputStream generateStream(String text, String model, StreamLatencyOptimization streamLatencyOptimization);
public InputStream generateStream(String text, String model, StreamLatencyOptimization streamLatencyOptimization, VoiceSettings settings);
public InputStream generateStream(String text, VoiceSettings settings, StreamLatencyOptimization streamLatencyOptimization);
public InputStream generateStream(String text, StreamLatencyOptimization streamLatencyOptimization);
public File speechToSpeech(File audioFile, StreamLatencyOptimization latencyOptimization, String modelId, VoiceSettings voiceSettings);
public File speechToSpeech(File audioFile, StreamLatencyOptimization latencyOptimization, String modelId);
public File speechToSpeech(File audioFile, String modelId);
public InputStream speechToSpeechStream(File audioFile, StreamLatencyOptimization latencyOptimization, String modelId, VoiceSettings voiceSettings);
public InputStream speechToSpeechStream(File audioFile, StreamLatencyOptimization latencyOptimization, String modelId);
public InputStream speechToSpeechStream(File audioFile, String modelId);
```
- - -
## Audio Native Projects
### Creating an Audio Native Project
You can create audio native projects using the AudioNative API.
```java
CreateAudioEnabledProjectRequest request = new CreateAudioEnabledProjectRequest()
.setName("Project name")
.setImage("https://...com/img.png")
.setAuthor("Andrew")
.setSmall(true)
.setTextColor("red")
.setBackgroundColor("black")
.setSessionization(3)
.setVoiceId("aso23809")
.setModelId("my_favorite_model")
.setFile(new File("input.dat"))
.setAutoConvert(true);
CreateAudioEnabledProjectModelResponse response = ElevenLabs.getAudioNativeAPI()
.createAudioEnabledProject(request);
```
- - -
## Projects
## Create a project
You can create a new project using the AddProjectRequest builder.
```java
AddProjectRequest request = new AddProjectRequest()
.setName("name")
.setFromUrl("...")
.setFromDocument(new File("file.dat"))
.setDefaultTitleVoiceId("voiceA")
.setDefaultParagraphVoiceId("voiceB")
.setDefaultModelId("the_default_model_of_your_dreams")
.setProjectOutputQuality(ProjectOutputQuality.STANDARD)
.setTitle("Big Title")
.setAuthor("Best Author")
.setIsbnNumber("THE. ISBN.")
.setAcxVolumeNormalization(true);
Project project = Project.addProject(request);
```
## Get a Project
Get a project by it's specific project ID.
```java
Project project = Project.getProjectById(projectId);
```
## Get all Projects
Get all of the projects associated with your account.
```java
List<Project> projects = Project.getProjects();
```
## Interacting with Projects
```java
Project project;
// Delete a project
String deleteResult = project.delete();
// Convert a project
String conversionResult = project.convertProject();
//Get the project's snapshots.
List<ProjectSnapshot> snapshots = project.getSnapshots();
// Access your chapters from memory
List<Chapter> chapters = project.getChapters();
// Refresh your local Project's chapters from the API
chapters = project.fetchUpdatedChapters(); // This will update the existing project object and return the list of new chapters
// Get a chapter by ID
Chapter chapter = project.getChapterById(chapterId);
// Delete a chapter
String result = project.deleteChapter(chapter);
// Convert a chapter
String result = project.convertChapter(chapter);
// Get chapter snapshots
List<ChapterSnapshot> snapshots = project.getChapterSnapshots(chapter);
```
## Interacting with Chapters
```java
Project project;
Chapter chapter = project.getChapterById("chapter_id");
// Delete a chapter
chapter.deleteChapter(project.getProjectId());
// Convert a chapter
chapter.convertChapter(project.getProjectId());
// Get a chapter's snapshots
List<ChapterSnapshot> snapshots = chapter.getChapterSnapshots(project.getProjectId());
//
```
## Accessing Snapshot Audio
Accessing a ProjectSnapshot audio stream:
```java
Project project;
List<ProjectSnapshot> projectSnapshots = project.getSnapshots();
ProjectSnapshot first = projectSnapshots.get(0);
InputStream audio = first.getAudioStream();
```
Accessing a ChapterSnapshot audio stream:
```java
Project project;
Chapter chapter;
List<ChapterSnapshot> chapterSnapshots = project.getChapterSnapshots(chapter);
ChapterSnapshot first = chapterSnapshots.get(0);
InputStream audio = first.getAudioStream();
```
Both ProjectSnapshot and ChapterSnapshot are of type Snapshot.
- - -
## Samples
A `Sample` is used as the training data for a given `Voice` model.
### Accessing Voice Samples
@@ -248,6 +389,10 @@ A `HistoryItem` is a previous TTS generation. You can download the generation as
HistoryItem item;
File file = item.downloadAudio();
```
- - -
### Projects
The `Projects`
- - -
## User Management
@@ -278,6 +423,11 @@ If you like what you see, give it a star! :)
- - -
## Todo
I will probably rework the 2 new builders I added when I added projects support. Their usage should be more clear, though the documentation covers their use cases I believe.
- - -
#### Unit Testing
Unit tests have been created, these endpoints are destructive and not included in the testing:
* deleteHistoryItem - WONT TEST

View File

@@ -60,7 +60,7 @@
<groupId>net.andrewcpu</groupId>
<artifactId>elevenlabs-api</artifactId>
<version>2.4</version>
<version>2.7.3-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
@@ -80,17 +80,17 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4.1</version>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.13.4</version>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.4</version>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -194,7 +194,6 @@
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -1,36 +1,7 @@
package net.andrewcpu.elevenlabs;
import com.fasterxml.jackson.annotation.JsonIgnore;
import net.andrewcpu.elevenlabs.api.impl.*;
import net.andrewcpu.elevenlabs.enums.GeneratedAudioOutputFormat;
import net.andrewcpu.elevenlabs.enums.StreamLatencyOptimization;
import net.andrewcpu.elevenlabs.model.history.History;
import net.andrewcpu.elevenlabs.model.history.HistoryItem;
import net.andrewcpu.elevenlabs.model.projects.Project;
import net.andrewcpu.elevenlabs.model.request.TextToSpeechRequest;
import net.andrewcpu.elevenlabs.model.response.CreateVoiceResponse;
import net.andrewcpu.elevenlabs.model.response.GenerationTypeModel;
import net.andrewcpu.elevenlabs.model.response.ProjectsModelResponse;
import net.andrewcpu.elevenlabs.model.user.Subscription;
import net.andrewcpu.elevenlabs.model.user.User;
import net.andrewcpu.elevenlabs.model.voice.Voice;
import net.andrewcpu.elevenlabs.model.voice.VoiceSettings;
import net.andrewcpu.elevenlabs.requests.ElevenLabsRequest;
import net.andrewcpu.elevenlabs.requests.history.*;
import net.andrewcpu.elevenlabs.requests.models.GetModelsRequest;
import net.andrewcpu.elevenlabs.requests.projects.GetProjectsRequest;
import net.andrewcpu.elevenlabs.requests.samples.DeleteSampleRequest;
import net.andrewcpu.elevenlabs.requests.samples.GetSampleRequest;
import net.andrewcpu.elevenlabs.requests.tts.PostTextToSpeechRequest;
import net.andrewcpu.elevenlabs.requests.tts.PostTextToSpeechStreamedRequest;
import net.andrewcpu.elevenlabs.requests.user.GetSubscriptionRequest;
import net.andrewcpu.elevenlabs.requests.user.GetUserRequest;
import net.andrewcpu.elevenlabs.requests.voices.*;
import net.andrewcpu.elevenlabs.util.ElevenNetworkUtil;
import java.io.File;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
public class ElevenLabs {
private static String API_KEY = null;
@@ -47,6 +18,15 @@ public class ElevenLabs {
public static String getApiKey() {
return API_KEY;
}
private static String defaultModel = "eleven_monolingual_v1";
public static String getDefaultModel() {
return defaultModel;
}
public static void setDefaultModel(String defaultModel) {
ElevenLabs.defaultModel = defaultModel;
}
public static void setApiKey(String apiKey) {
API_KEY = apiKey;

View File

@@ -1,5 +1,5 @@
package net.andrewcpu.elevenlabs.enums;
public enum HttpRequestType {
POST, GET, PUT, DELETE;
POST, GET, PUT, DELETE
}

View File

@@ -1,9 +1,27 @@
package net.andrewcpu.elevenlabs.model.projects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import net.andrewcpu.elevenlabs.ElevenLabs;
import net.andrewcpu.elevenlabs.model.ElevenModel;
import java.util.List;
public class Chapter extends ElevenModel {
public String deleteChapter(String projectId) {
return ElevenLabs.getProjectsAPI().deleteChapter(projectId, chapterId);
}
public String convertChapter(String projectId) {
return ElevenLabs.getProjectsAPI().convertChapter(projectId, chapterId);
}
public List<ChapterSnapshot> getChapterSnapshots(String projectId) {
return ElevenLabs.getProjectsAPI().getChapterSnapshots(projectId, chapterId);
}
@JsonProperty("chapter_id")
private String chapterId;
@@ -24,4 +42,66 @@ public class Chapter extends ElevenModel {
@JsonProperty("statistics")
private Statistics statistics;
public Chapter() {
}
public Chapter(String chapterId, String name, long lastConversionDateUnix, double conversionProgress, boolean canBeDownloaded, String state, Statistics statistics) {
this.chapterId = chapterId;
this.name = name;
this.lastConversionDateUnix = lastConversionDateUnix;
this.conversionProgress = conversionProgress;
this.canBeDownloaded = canBeDownloaded;
this.state = state;
this.statistics = statistics;
}
@JsonIgnore
public String getChapterId() {
return chapterId;
}
@JsonIgnore
public String getName() {
return name;
}
@JsonIgnore
public long getLastConversionDateUnix() {
return lastConversionDateUnix;
}
@JsonIgnore
public double getConversionProgress() {
return conversionProgress;
}
@JsonIgnore
public boolean isCanBeDownloaded() {
return canBeDownloaded;
}
@JsonIgnore
public String getState() {
return state;
}
@JsonIgnore
public Statistics getStatistics() {
return statistics;
}
@Override
@JsonIgnore
public String toString() {
return "Chapter{" +
"chapterId='" + chapterId + '\'' +
", name='" + name + '\'' +
", lastConversionDateUnix=" + lastConversionDateUnix +
", conversionProgress=" + conversionProgress +
", canBeDownloaded=" + canBeDownloaded +
", state='" + state + '\'' +
", statistics=" + statistics +
'}';
}
}

View File

@@ -2,34 +2,34 @@ package net.andrewcpu.elevenlabs.model.projects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import net.andrewcpu.elevenlabs.ElevenLabs;
import net.andrewcpu.elevenlabs.model.ElevenModel;
public class ChapterSnapshot extends ElevenModel {
import java.io.InputStream;
public class ChapterSnapshot extends Snapshot {
@Override
public InputStream getAudioStream() {
return ElevenLabs.getProjectsAPI().getChapterSnapshotAudioStream(projectId, chapterId, chapterSnapshotId);
}
public ChapterSnapshot() {
super();
}
public ChapterSnapshot(String chapterSnapshotId, String projectId, String chapterId, long createdAtUnix, String name) {
super(projectId, createdAtUnix, name);
this.chapterSnapshotId = chapterSnapshotId;
this.projectId = projectId;
this.chapterId = chapterId;
this.createdAtUnix = createdAtUnix;
this.name = name;
}
@JsonProperty("chapter_snapshot_id")
private String chapterSnapshotId;
@JsonProperty("project_id")
private String projectId;
@JsonProperty("chapter_id")
private String chapterId;
@JsonProperty("created_at_unix")
private long createdAtUnix;
@JsonProperty("name")
private String name;
@JsonIgnore
public String getChapterSnapshotId() {
@@ -40,20 +40,6 @@ public class ChapterSnapshot extends ElevenModel {
return chapterId;
}
@JsonIgnore
public String getProjectId() {
return projectId;
}
@JsonIgnore
public long getCreatedAtUnix() {
return createdAtUnix;
}
@JsonIgnore
public String getName() {
return name;
}
@Override
@JsonIgnore

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import net.andrewcpu.elevenlabs.ElevenLabs;
import net.andrewcpu.elevenlabs.model.ElevenModel;
import net.andrewcpu.elevenlabs.model.request.AddProjectRequest;
import java.util.List;
@@ -13,6 +14,63 @@ public class Project extends ElevenModel {
return ElevenLabs.getProjectsAPI().getProjects();
}
public static Project addProject(AddProjectRequest builder) {
return ElevenLabs.getProjectsAPI().addProject(builder);
}
public static Project getProjectById(String projectId) {
return ElevenLabs.getProjectsAPI().getProject(projectId);
}
public List<Chapter> fetchUpdatedChapters() {
this.chapters = ElevenLabs.getProjectsAPI().getChapters(projectId);
return this.chapters;
}
public String deleteChapter(Chapter chapter) {
return chapter.deleteChapter(projectId);
}
public String convertChapter(Chapter chapter) {
return chapter.convertChapter(projectId);
}
public List<ChapterSnapshot> getChapterSnapshots(Chapter chapter) {
return chapter.getChapterSnapshots(projectId);
}
public String deleteProject() {
return ElevenLabs.getProjectsAPI().deleteProject(projectId);
}
public String convertProject() {
return ElevenLabs.getProjectsAPI().convertProject(projectId);
}
public List<ProjectSnapshot> getSnapshots() {
return ElevenLabs.getProjectsAPI().getProjectSnapshots(projectId);
}
public Chapter getChapterById(String chapterId) {
return ElevenLabs.getProjectsAPI().getChapterById(projectId, chapterId);
}
public Project(String projectId, String name, long unixCreateDate, String defaultTitleVoiceId, String defaultParagraphVoiceId, String defaultModelId, long lastConversionDateUnix, boolean canBeDownloaded, String state, List<Chapter> chapters) {
this.projectId = projectId;
this.name = name;
this.unixCreateDate = unixCreateDate;
this.defaultTitleVoiceId = defaultTitleVoiceId;
this.defaultParagraphVoiceId = defaultParagraphVoiceId;
this.defaultModelId = defaultModelId;
this.lastConversionDateUnix = lastConversionDateUnix;
this.canBeDownloaded = canBeDownloaded;
this.state = state;
this.chapters = chapters;
}
public Project() {
}
@JsonProperty("project_id")
private String projectId;

View File

@@ -2,55 +2,40 @@ package net.andrewcpu.elevenlabs.model.projects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import net.andrewcpu.elevenlabs.ElevenLabs;
import net.andrewcpu.elevenlabs.model.ElevenModel;
public class ProjectSnapshot extends ElevenModel {
import java.io.InputStream;
public class ProjectSnapshot extends Snapshot {
@Override
public InputStream getAudioStream() {
return ElevenLabs.getProjectsAPI().getProjectSnapshotAudioStream(projectId, projectSnapshotId);
}
public ProjectSnapshot() {
super();
}
public ProjectSnapshot(String projectSnapshotId, String projectId, long createdAtUnix, String name) {
super(projectId, createdAtUnix, name);
this.projectSnapshotId = projectSnapshotId;
this.projectId = projectId;
this.createdAtUnix = createdAtUnix;
this.name = name;
}
@JsonProperty("project_snapshot_id")
private String projectSnapshotId;
@JsonProperty("project_id")
private String projectId;
@JsonProperty("created_at_unix")
private long createdAtUnix;
@JsonProperty("name")
private String name;
@JsonIgnore
public String getProjectSnapshotId() {
return projectSnapshotId;
}
@JsonIgnore
public String getProjectId() {
return projectId;
}
@JsonIgnore
public long getCreatedAtUnix() {
return createdAtUnix;
}
@JsonIgnore
public String getName() {
return name;
}
@Override
@JsonIgnore
public String toString() {
return "Snapshot{" +
return "ProjectSnapshot{" +
"projectSnapshotId='" + projectSnapshotId + '\'' +
", projectId='" + projectId + '\'' +
", createdAtUnix=" + createdAtUnix +

View File

@@ -0,0 +1,54 @@
package net.andrewcpu.elevenlabs.model.projects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import net.andrewcpu.elevenlabs.model.ElevenModel;
import java.io.InputStream;
public abstract class Snapshot extends ElevenModel {
@JsonProperty("project_id")
protected String projectId;
@JsonProperty("created_at_unix")
protected long createdAtUnix;
@JsonProperty("name")
protected String name;
public Snapshot(String projectId, long createdAtUnix, String name) {
this.projectId = projectId;
this.createdAtUnix = createdAtUnix;
this.name = name;
}
public Snapshot() {
}
public abstract InputStream getAudioStream();
@JsonIgnore
public String getProjectId() {
return projectId;
}
@JsonIgnore
public long getCreatedAtUnix() {
return createdAtUnix;
}
@JsonIgnore
public String getName() {
return name;
}
@Override
@JsonIgnore
public String toString() {
return "Snapshot{" +
"projectId='" + projectId + '\'' +
", createdAtUnix=" + createdAtUnix +
", name='" + name + '\'' +
'}';
}
}

View File

@@ -3,7 +3,6 @@ package net.andrewcpu.elevenlabs.model.request;
import net.andrewcpu.elevenlabs.enums.ProjectOutputQuality;
import java.io.File;
import java.lang.invoke.StringConcatFactory;
public class AddProjectRequest {
private String name;

View File

@@ -2,7 +2,6 @@ package net.andrewcpu.elevenlabs.model.request;
import net.andrewcpu.elevenlabs.model.ElevenModel;
import javax.management.loading.PrivateClassLoader;
import java.io.File;
public class CreateAudioNativeProjectRequest extends ElevenModel {

View File

@@ -1,7 +1,6 @@
package net.andrewcpu.elevenlabs.model.response;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import net.andrewcpu.elevenlabs.model.ElevenModel;
import net.andrewcpu.elevenlabs.model.Language;

View File

@@ -1,7 +1,6 @@
package net.andrewcpu.elevenlabs.model.tuning;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import net.andrewcpu.elevenlabs.model.ElevenModel;

View File

@@ -167,28 +167,28 @@ public class Voice extends ElevenModel {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId,text, model, outputFormat,StreamLatencyOptimization.getDefault(), settings);
}
public File generate(String text, VoiceSettings settings, GeneratedAudioOutputFormat outputFormat) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, "eleven_monolingual_v1", outputFormat,StreamLatencyOptimization.getDefault(), settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, ElevenLabs.getDefaultModel(), outputFormat,StreamLatencyOptimization.getDefault(), settings);
}
public File generate(String text, VoiceSettings settings, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, "eleven_monolingual_v1", GeneratedAudioOutputFormat.getDefault(),streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, ElevenLabs.getDefaultModel(), GeneratedAudioOutputFormat.getDefault(),streamLatencyOptimization, settings);
}
public File generate(String text, VoiceSettings settings, GeneratedAudioOutputFormat outputFormat, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, "eleven_monolingual_v1", outputFormat,streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, ElevenLabs.getDefaultModel(), outputFormat,streamLatencyOptimization, settings);
}
public File generate(String text, GeneratedAudioOutputFormat outputFormat, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, "eleven_monolingual_v1", outputFormat,streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, ElevenLabs.getDefaultModel(), outputFormat,streamLatencyOptimization, settings);
}
public File generate(String text, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, "eleven_monolingual_v1", GeneratedAudioOutputFormat.getDefault(), streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, ElevenLabs.getDefaultModel(), GeneratedAudioOutputFormat.getDefault(), streamLatencyOptimization, settings);
}
public File generate(String text, VoiceSettings settings) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, "eleven_monolingual_v1", settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, ElevenLabs.getDefaultModel(), settings);
}
public File generate(String text) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, "eleven_monolingual_v1", settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeech(voiceId, text, ElevenLabs.getDefaultModel(), settings);
}
@@ -202,11 +202,11 @@ public class Voice extends ElevenModel {
}
public InputStream generateStream(String text, VoiceSettings settings) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, "eleven_monolingual_v1", settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, ElevenLabs.getDefaultModel(), settings);
}
public InputStream generateStream(String text) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, "eleven_monolingual_v1", settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, ElevenLabs.getDefaultModel(), settings);
}
public InputStream generateStream(String text, String model, GeneratedAudioOutputFormat generatedAudioOutputFormat, StreamLatencyOptimization streamLatencyOptimization) {
@@ -218,11 +218,11 @@ public class Voice extends ElevenModel {
}
public InputStream generateStream(String text, VoiceSettings settings, GeneratedAudioOutputFormat generatedAudioOutputFormat, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, "eleven_monolingual_v1", generatedAudioOutputFormat, streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, ElevenLabs.getDefaultModel(), generatedAudioOutputFormat, streamLatencyOptimization, settings);
}
public InputStream generateStream(String text, GeneratedAudioOutputFormat generatedAudioOutputFormat, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, "eleven_monolingual_v1", generatedAudioOutputFormat, streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, ElevenLabs.getDefaultModel(), generatedAudioOutputFormat, streamLatencyOptimization, settings);
}
public InputStream generateStream(String text, String model, StreamLatencyOptimization streamLatencyOptimization) {
@@ -234,11 +234,11 @@ public class Voice extends ElevenModel {
}
public InputStream generateStream(String text, VoiceSettings settings, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, "eleven_monolingual_v1", GeneratedAudioOutputFormat.getDefault(), streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, ElevenLabs.getDefaultModel(), GeneratedAudioOutputFormat.getDefault(), streamLatencyOptimization, settings);
}
public InputStream generateStream(String text, StreamLatencyOptimization streamLatencyOptimization) {
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, "eleven_monolingual_v1", GeneratedAudioOutputFormat.getDefault(), streamLatencyOptimization, settings);
return ElevenLabs.getTextToSpeechAPI().generateTextToSpeechStreamed(voiceId, text, ElevenLabs.getDefaultModel(), GeneratedAudioOutputFormat.getDefault(), streamLatencyOptimization, settings);
}
public File speechToSpeech(File audioFile, StreamLatencyOptimization latencyOptimization, String modelId, VoiceSettings voiceSettings) {

View File

@@ -6,4 +6,9 @@ public abstract class DeleteRequest<T> extends ElevenLabsRequest<T> {
public DeleteRequest(String endpoint, Class<T> clazz) {
super(HttpRequestType.DELETE, endpoint, clazz);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,9 +8,9 @@ import java.util.Map;
import static net.andrewcpu.elevenlabs.util.ElevenNetworkUtil.buildQueryParameters;
public abstract class ElevenLabsRequest<T> {
private HttpRequestType type;
private String endpoint;
private Class<T> responseClass;
private final HttpRequestType type;
private final String endpoint;
private final Class<T> responseClass;
public ElevenLabsRequest(HttpRequestType type, String endpoint, Class<T> clazz) {
this.type = type;
@@ -23,6 +23,8 @@ public abstract class ElevenLabsRequest<T> {
}
public String getEndpoint() {
Map<String, String> params = getQueryParameters();
if(params.isEmpty()) return endpoint;
return endpoint + "?" + buildQueryParameters(getQueryParameters());
}

View File

@@ -6,4 +6,9 @@ public abstract class GetRequest<T> extends ElevenLabsRequest<T> {
public GetRequest(String endpoint, Class<T> clazz) {
super(HttpRequestType.GET, endpoint, clazz);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,7 +8,7 @@ import java.util.HashMap;
import java.util.Map;
public class PostCreateAudioNativeProjectRequest extends PostRequest<CreateAudioEnabledProjectModelResponse> {
private CreateAudioNativeProjectRequest request;
private final CreateAudioNativeProjectRequest request;
public PostCreateAudioNativeProjectRequest(CreateAudioNativeProjectRequest request) {
super("v1/audio-native", CreateAudioEnabledProjectModelResponse.class);
this.request = request;

View File

@@ -6,9 +6,4 @@ public class DeleteHistoryItemRequest extends DeleteRequest<String> {
public DeleteHistoryItemRequest(String historyItemId) {
super("v1/history/" + historyItemId, String.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,9 +8,4 @@ public class GetHistoryItemAudioRequest extends GetRequest<File> {
public GetHistoryItemAudioRequest(String historyItemId) {
super("v1/history/" + historyItemId + "/audio", File.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetHistoryItemByIdRequest extends GetRequest<HistoryItem> {
public GetHistoryItemByIdRequest(String historyId) {
super("v1/history/" + historyId, HistoryItem.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetHistoryRequest extends GetRequest<History> {
public GetHistoryRequest() {
super("v1/history", History.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,7 +8,7 @@ import java.util.Arrays;
import java.util.stream.Collectors;
public class PostDownloadHistoryItemsRequest extends PostRequest<File> {
private String[] historyItemIds;
private final String[] historyItemIds;
public PostDownloadHistoryItemsRequest(String... historyItemIds) {
super("v1/history/download", File.class);
this.historyItemIds = historyItemIds;

View File

@@ -7,9 +7,4 @@ public class GetModelsRequest extends GetRequest<GenerationTypeModel[]> {
public GetModelsRequest() {
super("v1/models", GenerationTypeModel[].class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class DeleteChapterByIdRequest extends DeleteRequest<String> {
public DeleteChapterByIdRequest(String projectId, String chapterId) {
super("v1/projects/" + projectId + "/chapters/" + chapterId, String.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -6,9 +6,4 @@ public class DeleteProjectByIdRequest extends DeleteRequest<String> {
public DeleteProjectByIdRequest(String projectId) {
super("v1/projects/" + projectId, String.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetChapterByIdRequest extends GetRequest<Chapter> {
public GetChapterByIdRequest(String projectId, String chapterId) {
super("v1/projects/" + projectId + "/chapters/" + chapterId, Chapter.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,8 +8,4 @@ public class GetChapterSnapshotsRequest extends GetRequest<ChapterSnapshotsModel
super("v1/projects/" + projectId + "/chapters/" + chapterId + "/snapshots", ChapterSnapshotsModelResponse.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetProjectByIdRequest extends GetRequest<Project> {
public GetProjectByIdRequest(String projectId) {
super("v1/projects/" + projectId, Project.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetProjectChaptersRequest extends GetRequest<ChaptersModelResponse>
public GetProjectChaptersRequest(String projectId) {
super("v1/projects/" + projectId + "/chapters", ChaptersModelResponse.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetProjectSnapshotsRequest extends GetRequest<ProjectSnapshotsModel
public GetProjectSnapshotsRequest(String projectId) {
super("v1/projects/" + projectId + "/snapshots", ProjectSnapshotsModelResponse.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -3,15 +3,8 @@ package net.andrewcpu.elevenlabs.requests.projects;
import net.andrewcpu.elevenlabs.model.response.ProjectsModelResponse;
import net.andrewcpu.elevenlabs.requests.GetRequest;
import java.util.HashMap;
public class GetProjectsRequest extends GetRequest<ProjectsModelResponse> {
public GetProjectsRequest() {
super("v1/projects", ProjectsModelResponse.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,7 +8,7 @@ import java.util.HashMap;
import java.util.Map;
public class PostAddProjectRequest extends PostRequest<ProjectModelResponse> {
private AddProjectRequest request;
private final AddProjectRequest request;
public PostAddProjectRequest(AddProjectRequest request) {
super("v1/projects/add", ProjectModelResponse.class);
this.request = request;

View File

@@ -6,9 +6,4 @@ public class DeleteSampleRequest extends DeleteRequest<String> {
public DeleteSampleRequest(String voiceId, String sampleId) {
super("v1/voices/" + voiceId + "/samples/" + sampleId, String.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,9 +8,4 @@ public class GetSampleRequest extends GetRequest<File> {
public GetSampleRequest(String voiceId, String sampleId) {
super("v1/voices/" + voiceId + "/samples/" + sampleId + "/audio", File.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -9,10 +9,10 @@ import java.util.HashMap;
import java.util.Map;
public class PostSpeechToSpeechRequest extends PostRequest<File> {
private StreamLatencyOptimization latencyOptimization;
private String modelId;
private VoiceSettings voiceSettings;
private File audio;
private final StreamLatencyOptimization latencyOptimization;
private final String modelId;
private final VoiceSettings voiceSettings;
private final File audio;
public PostSpeechToSpeechRequest(String voiceId, VoiceSettings voiceSettings, File audio, String modelId, StreamLatencyOptimization latencyOptimization) {
super("v1/speech-to-speech/" + voiceId, File.class);
this.latencyOptimization = latencyOptimization;

View File

@@ -10,10 +10,10 @@ import java.util.HashMap;
import java.util.Map;
public class PostSpeechToSpeechStreamedRequest extends PostRequest<InputStream> {
private StreamLatencyOptimization latencyOptimization;
private String modelId;
private VoiceSettings voiceSettings;
private File audio;
private final StreamLatencyOptimization latencyOptimization;
private final String modelId;
private final VoiceSettings voiceSettings;
private final File audio;
public PostSpeechToSpeechStreamedRequest(String voiceId, VoiceSettings voiceSettings, File audio, String modelId, StreamLatencyOptimization latencyOptimization) {
super("v1/speech-to-speech/" + voiceId + "/stream", InputStream.class);
this.latencyOptimization = latencyOptimization;

View File

@@ -10,9 +10,9 @@ import java.util.HashMap;
import java.util.Map;
public class PostTextToSpeechRequest extends PostRequest<File> {
private TextToSpeechRequest request;
private StreamLatencyOptimization streamLatencyOptimization;
private GeneratedAudioOutputFormat outputFormat;
private final TextToSpeechRequest request;
private final StreamLatencyOptimization streamLatencyOptimization;
private final GeneratedAudioOutputFormat outputFormat;
public PostTextToSpeechRequest(String voiceId, TextToSpeechRequest request) {
super("v1/text-to-speech/" + voiceId, File.class);
@@ -52,7 +52,7 @@ public class PostTextToSpeechRequest extends PostRequest<File> {
public Map<String, String> getQueryParameters() {
Map<String, String> map = new HashMap<>();
map.put("optimize_streaming_latency", String.valueOf(streamLatencyOptimization.getValue()));
map.put("output_format", outputFormat.name());
map.put("output_format", outputFormat.name().toLowerCase());
return map;
}
}

View File

@@ -5,15 +5,14 @@ import net.andrewcpu.elevenlabs.enums.StreamLatencyOptimization;
import net.andrewcpu.elevenlabs.model.request.TextToSpeechRequest;
import net.andrewcpu.elevenlabs.requests.PostRequest;
import java.io.File;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class PostTextToSpeechStreamedRequest extends PostRequest<InputStream> {
private TextToSpeechRequest request;
private StreamLatencyOptimization streamLatencyOptimization;
private GeneratedAudioOutputFormat outputFormat;
private final TextToSpeechRequest request;
private final StreamLatencyOptimization streamLatencyOptimization;
private final GeneratedAudioOutputFormat outputFormat;
public PostTextToSpeechStreamedRequest(String voiceId, TextToSpeechRequest request) {
super("v1/text-to-speech/" + voiceId, InputStream.class);
@@ -47,7 +46,7 @@ public class PostTextToSpeechStreamedRequest extends PostRequest<InputStream> {
public Map<String, String> getQueryParameters() {
Map<String, String> map = new HashMap<>();
map.put("optimize_streaming_latency", String.valueOf(streamLatencyOptimization.getValue()));
map.put("output_format", outputFormat.name());
map.put("output_format", outputFormat.name().toLowerCase());
return map;
}

View File

@@ -8,9 +8,4 @@ public class GetSubscriptionRequest extends GetRequest<Subscription> {
public GetSubscriptionRequest() {
super("v1/user/subscription", Subscription.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetUserRequest extends GetRequest<User> {
public GetUserRequest() {
super("v1/user", User.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -6,9 +6,4 @@ public class DeleteVoiceRequest extends DeleteRequest<String> {
public DeleteVoiceRequest(String voiceId) {
super("v1/voices/" + voiceId, String.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetDefaultVoiceSettingsRequest extends GetRequest<VoiceSettings> {
public GetDefaultVoiceSettingsRequest() {
super("v1/voices/settings/default", VoiceSettings.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,20 +7,23 @@ import java.util.HashMap;
import java.util.Map;
public class GetVoiceRequest extends GetRequest<Voice> {
private boolean withSettings;
private final boolean withSettings;
public GetVoiceRequest(String voiceId) {
this(voiceId, true);
}
public GetVoiceRequest(String voiceId, boolean withSettings) {
super( "v1/voices/" + voiceId, Voice.class);
this.withSettings = withSettings;
}
@Override
public Object getPayload() {
Map<String, Object> payload = new HashMap<>();
payload.put("with_settings", withSettings);
public Map<String, String> getQueryParameters() {
Map<String, String> payload = new HashMap<>();
payload.put("with_settings", String.valueOf(withSettings));
return payload;
}
}

View File

@@ -7,9 +7,4 @@ public class GetVoiceSettingsRequest extends GetRequest<VoiceSettings> {
public GetVoiceSettingsRequest(String voiceId) {
super("v1/voices/" + voiceId + "/settings", VoiceSettings.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -7,9 +7,4 @@ public class GetVoicesRequest extends GetRequest<VoiceModelResponse> {
public GetVoicesRequest() {
super("v1/voices", VoiceModelResponse.class);
}
@Override
public Object getPayload() {
return null;
}
}

View File

@@ -8,10 +8,10 @@ import java.util.HashMap;
import java.util.Map;
public class PostAddVoiceRequest extends PostRequest<CreateVoiceResponse> {
private String name;
private File[] samples;
private String description;
private Map<String, String> labels;
private final String name;
private final File[] samples;
private final String description;
private final Map<String, String> labels;
public PostAddVoiceRequest(String name, File[] samples, String description, Map<String, String> labels) {
super("v1/voices/add", CreateVoiceResponse.class);
this.name = name;

View File

@@ -7,10 +7,10 @@ import java.util.HashMap;
import java.util.Map;
public class PostEditVoiceRequest extends PostRequest<String> {
private String name;
private File[] samples;
private String description;
private Map<String, String> labels;
private final String name;
private final File[] samples;
private final String description;
private final Map<String, String> labels;
public PostEditVoiceRequest(String voiceId, String name, File[] samples, String description, Map<String, String> labels) {
super("v1/voices/" + voiceId + "/edit", String.class);
this.name = name;

View File

@@ -4,7 +4,7 @@ import net.andrewcpu.elevenlabs.model.voice.VoiceSettings;
import net.andrewcpu.elevenlabs.requests.PostRequest;
public class PostEditVoiceSettingsRequest extends PostRequest<String> {
private VoiceSettings voiceSettings;
private final VoiceSettings voiceSettings;
public PostEditVoiceSettingsRequest(String voiceId, VoiceSettings voiceSettings) {
super("v1/voices/" + voiceId + "/settings/edit", String.class);
this.voiceSettings = voiceSettings;

View File

@@ -12,16 +12,19 @@ import org.apache.hc.client5.http.entity.mime.MultipartEntityBuilder;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.core5.http.*;
import org.apache.hc.core5.http.ContentType;
import org.apache.hc.core5.http.HttpEntity;
import org.apache.hc.core5.http.HttpRequest;
import org.apache.hc.core5.http.NameValuePair;
import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.apache.hc.core5.http.io.entity.StringEntity;
import org.apache.hc.core5.http.message.BasicNameValuePair;
import org.apache.hc.core5.net.URIBuilder;
import java.io.*;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -47,11 +50,7 @@ public class ElevenNetworkUtil {
}
private static String encodeValue(String value) {
try {
return URLEncoder.encode(value, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("Encoding not supported", e);
}
return URLEncoder.encode(value, StandardCharsets.UTF_8);
}
public static HttpUriRequestBase getRequest(HttpRequestType type, String path) {
@@ -67,22 +66,10 @@ public class ElevenNetworkUtil {
}
}
private static List<NameValuePair> getParameters(Object payload) {
List<NameValuePair> parameters = new ArrayList<>();
if (payload instanceof Map<?, ?>) {
Map<?, ?> payloadMap = (Map<?, ?>) payload;
for (Map.Entry<?, ?> entry : payloadMap.entrySet()) {
parameters.add(new BasicNameValuePair(String.valueOf(entry.getKey()), String.valueOf(entry.getValue())));
}
}
return parameters;
}
private static HttpUriRequestBase handleNonBodyRequest(HttpRequestType requestType, Object payload, String path) {
List<NameValuePair> parameters = getParameters(payload);
private static HttpUriRequestBase handleNonBodyRequest(HttpRequestType requestType, String path) {
HttpUriRequestBase request = getRequest(requestType, path);
try {
request.setUri(new URIBuilder(path).addParameters(parameters).build());
request.setUri(new URIBuilder(path).build());
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
@@ -142,7 +129,7 @@ public class ElevenNetworkUtil {
public static HttpUriRequestBase getRequest(HttpRequestType method, String path, Object payload) throws JsonProcessingException {
HttpUriRequestBase request;
if (method == HttpRequestType.GET || method == HttpRequestType.DELETE) {
request = handleNonBodyRequest(method, payload, path);
request = handleNonBodyRequest(method, path);
} else {
request = handleBodyRequest(method, payload, path);
}

View File

@@ -4,8 +4,7 @@ import net.andrewcpu.elevenlabs.ElevenLabs;
import net.andrewcpu.elevenlabs.ElevenLabsTest;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.*;
public class UserTest extends ElevenLabsTest {
@Test
@@ -14,7 +13,7 @@ public class UserTest extends ElevenLabsTest {
ElevenLabs.getUserAPI().getUser();
}catch (Exception e) {
e.printStackTrace();
assertTrue("Failed to get user: " + e.getMessage(), false);
fail("Failed to get user: " + e.getMessage());
}
}
@@ -24,7 +23,7 @@ public class UserTest extends ElevenLabsTest {
ElevenLabs.getUserAPI().getSubscription();
}catch (Exception e) {
e.printStackTrace();
assertFalse("Failed to get subscription: " + e.getMessage(), true);
fail("Failed to get subscription: " + e.getMessage());
}
}
}

View File

@@ -13,8 +13,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.*;
public class VoiceTest extends ElevenLabsTest {
@@ -25,9 +24,9 @@ public class VoiceTest extends ElevenLabsTest {
voice = ElevenLabs.getVoiceAPI().getVoice(ElevenLabsTest.TEST_VOICE, true);
}catch (Exception e){
e.printStackTrace();
assertTrue("Failed to get voice: " + e.getMessage(), voice != null);
assertNotNull("Failed to get voice: " + e.getMessage(), voice);
}
assertTrue(voice.getSettings() != null);
assertNotNull(voice.getSettings());
}
@Test
@@ -37,9 +36,9 @@ public class VoiceTest extends ElevenLabsTest {
voice = ElevenLabs.getVoiceAPI().getVoice(ElevenLabsTest.TEST_VOICE, false);
}catch (Exception e){
e.printStackTrace();
assertTrue("Failed to get voice: " + e.getMessage(), voice != null);
assertNotNull("Failed to get voice: " + e.getMessage(), voice);
}
assertTrue(voice.getSettings() == null);
assertNull(voice.getSettings());
}
@Test
@@ -49,7 +48,7 @@ public class VoiceTest extends ElevenLabsTest {
settings = ElevenLabs.getVoiceAPI().getVoiceSettings(ElevenLabsTest.TEST_VOICE);
}catch (Exception e) {
e.printStackTrace();
assertTrue("Failed to get voice settings: " + e.getMessage(), false);
fail("Failed to get voice settings: " + e.getMessage());
}
}
@@ -60,7 +59,7 @@ public class VoiceTest extends ElevenLabsTest {
defaultVoiceSettings = ElevenLabs.getVoiceAPI().getDefaultVoiceSettings();
}catch (Exception e) {
e.printStackTrace();
assertTrue("Failed to get default voice settings: " + e.getMessage(), false);
fail("Failed to get default voice settings: " + e.getMessage());
}
}
@@ -70,8 +69,8 @@ public class VoiceTest extends ElevenLabsTest {
try{
voices = ElevenLabs.getVoiceAPI().getVoices();
}catch (Exception e) {
e.printStackTrace();;
assertTrue("Failed to get voices: " + e.getMessage(), false);
e.printStackTrace();
fail("Failed to get voices: " + e.getMessage());
}
assertTrue(voices != null && voices.size() > 0);
}