mirror of
https://github.com/Andrewcpu/elevenlabs-api.git
synced 2026-05-06 03:00:23 -04:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa4c8bf5db | ||
|
|
96fc45920d | ||
|
|
b9c74c1bd7 | ||
|
|
f2f3915c6c | ||
|
|
79e570f989 | ||
|
|
0a4a221b5c | ||
|
|
cc360a258e | ||
|
|
9c7fffbb9a | ||
|
|
4cfd14fb95 | ||
|
|
a8630ceeb0 | ||
|
|
7593f3a3f1 |
136
README.md
136
README.md
@@ -4,6 +4,8 @@
|
||||
## Getting Started
|
||||
So you wanna make custom voices, huh? Well you've come to the right place.
|
||||
This library should cover all the ElevenLabs API endpoints as of 11/15/23.
|
||||
**Update**
|
||||
It seems I jumped the gun (or happened to bump into an accidental push of the speech to speech API docs), but the original documentation that my implementation was based on has now been removed or hidden. It may reappear as is, or will require changes.
|
||||
|
||||
### Installation
|
||||
**Maven**
|
||||
@@ -13,7 +15,7 @@ To add `elevenlabs-api` to your Maven project, use:
|
||||
<dependency>
|
||||
<groupId>net.andrewcpu</groupId>
|
||||
<artifactId>elevenlabs-api</artifactId>
|
||||
<version>2.7.2</version>
|
||||
<version>2.7.8</version>
|
||||
</dependency>
|
||||
```
|
||||
**JAR**
|
||||
@@ -38,6 +40,94 @@ ElevenLabs.setDefaultModel("eleven_monolingual_v1"); // Optional, defaults to: "
|
||||
### **ElevenLabs API Documentation**: https://api.elevenlabs.io/docs
|
||||
|
||||
- - -
|
||||
|
||||
## Simplified Generation Handling with Builders
|
||||
### v2.7.8 now includes SpeechGenerationBuilder.java
|
||||
|
||||
[//]: # (### Speech to Speech)
|
||||
|
||||
[//]: # (```java)
|
||||
|
||||
[//]: # (//File output)
|
||||
|
||||
[//]: # (SpeechGenerationBuilder.speechToSpeech())
|
||||
|
||||
[//]: # ( .file() // output type of file (or use .streamed() for an InputStream))
|
||||
|
||||
[//]: # ( .setInputFile(File))
|
||||
|
||||
[//]: # ( .setGeneratedAudioOutputFormat(GeneratedAudioOutputFormat.MP3_44100_128))
|
||||
|
||||
[//]: # ( .setVoiceId("voiceIdString"))
|
||||
|
||||
[//]: # ( .setVoiceSettings(VoiceSettings))
|
||||
|
||||
[//]: # ( .setVoice(Voice) // or use a voice object, which will pull settings / ID out of the Voice)
|
||||
|
||||
[//]: # ( .setModelId("modelIdString"))
|
||||
|
||||
[//]: # ( .setModel(ElevenLabsVoiceModel.ELEVEN_ENGLISH_STS_V2))
|
||||
|
||||
[//]: # ( .setLatencyOptimization(StreamLatencyOptimization.NONE))
|
||||
|
||||
[//]: # ( .build();)
|
||||
|
||||
[//]: # (//Streamed output)
|
||||
|
||||
[//]: # (SpeechGenerationBuilder.speechToSpeech())
|
||||
|
||||
[//]: # ( .streamed())
|
||||
|
||||
[//]: # ( .setInputFile(File))
|
||||
|
||||
[//]: # ( .setGeneratedAudioOutputFormat(GeneratedAudioOutputFormat.MP3_44100_128))
|
||||
|
||||
[//]: # ( .setVoiceId("voiceIdString"))
|
||||
|
||||
[//]: # ( .setVoiceSettings(VoiceSettings))
|
||||
|
||||
[//]: # ( .setVoice(Voice) // or use a voice object, which will pull settings / ID out of the Voice)
|
||||
|
||||
[//]: # ( .setModelId("modelIdString"))
|
||||
|
||||
[//]: # ( .setModel(ElevenLabsVoiceModel.ELEVEN_ENGLISH_STS_V2))
|
||||
|
||||
[//]: # ( .setLatencyOptimization(StreamLatencyOptimization.NONE))
|
||||
|
||||
[//]: # ( .build();)
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
### Text to Speech
|
||||
```java
|
||||
//File output
|
||||
SpeechGenerationBuilder.textToSpeech()
|
||||
.file() // output type of file (or use .streamed() for an InputStream)
|
||||
.setText(String text)
|
||||
.setGeneratedAudioOutputFormat(GeneratedAudioOutputFormat.MP3_44100_128)
|
||||
.setVoiceId("voiceIdString")
|
||||
.setVoiceSettings(VoiceSettings)
|
||||
.setVoice(Voice) // or use a voice object, which will pull settings / ID out of the Voice
|
||||
.setModelId("modelIdString")
|
||||
.setModel(ElevenLabsVoiceModel.ELEVEN_ENGLISH_STS_V2)
|
||||
.setLatencyOptimization(StreamLatencyOptimization.NONE)
|
||||
.build();
|
||||
//Streamed output
|
||||
SpeechGenerationBuilder.textToSpeech()
|
||||
.streamed()
|
||||
.setText(String text)
|
||||
.setGeneratedAudioOutputFormat(GeneratedAudioOutputFormat.MP3_44100_128)
|
||||
.setVoiceId("voiceIdString")
|
||||
.setVoiceSettings(VoiceSettings)
|
||||
.setVoice(Voice) // or use a voice object, which will pull settings / ID out of the Voice
|
||||
.setModelId("modelIdString")
|
||||
.setModel(ElevenLabsVoiceModel.ELEVEN_ENGLISH_STS_V2)
|
||||
.setLatencyOptimization(StreamLatencyOptimization.NONE)
|
||||
.build();
|
||||
```
|
||||
|
||||
- - -
|
||||
|
||||
## Voices
|
||||
### Accessing your List of Available Voices
|
||||
To retrieve your list of accessible Voices, you can statically utilize `Voice#getVoices()`. This will return both ElevenLab's pregenerated `Voice` models, as well as any personal `Voices` you have generated.
|
||||
@@ -176,19 +266,26 @@ public InputStream generateStream(String text, VoiceSettings settings, StreamLat
|
||||
|
||||
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);
|
||||
|
||||
```
|
||||
|
||||
[//]: # (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
|
||||
@@ -347,6 +444,19 @@ To get your ElevenLabs generation `History`, you can utilize `History#get()`. (Y
|
||||
History history = History.get();
|
||||
```
|
||||
|
||||
|
||||
### Getting all History Items
|
||||
The History endpoint accepts page size parameters and a start-after-history-id parameter. We can use this to fetch all of our HistoryItems.
|
||||
```java
|
||||
History history = History.get(); // the latest history object
|
||||
Optional<History> hist = Optional.of(history);
|
||||
List<HistoryItem> items = new ArrayList();
|
||||
do {
|
||||
items.addAll(hist.get().getHistoryItems());
|
||||
hist = hist.get().next();
|
||||
} while(hist.isPresent() && hist.hasMore());
|
||||
```
|
||||
|
||||
### Getting a History Item
|
||||
To retrieve a `HistoryItem` from your `History`, you can use `History#getHistoryItem(String itemId)`.
|
||||
```java
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -60,7 +60,7 @@
|
||||
|
||||
<groupId>net.andrewcpu</groupId>
|
||||
<artifactId>elevenlabs-api</artifactId>
|
||||
<version>2.7.5-SNAPSHOT</version>
|
||||
<version>2.7.8</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
|
||||
@@ -13,6 +13,14 @@ public class HistoryAPI extends ElevenLabsAPI {
|
||||
return sendRequest(new GetHistoryRequest());
|
||||
}
|
||||
|
||||
public History getHistory(int pageSize, String afterHistoryId) {
|
||||
return sendRequest(new GetHistoryRequest(pageSize, afterHistoryId));
|
||||
}
|
||||
|
||||
public History getHistory(String afterHistoryId) {
|
||||
return sendRequest(new GetHistoryRequest(afterHistoryId));
|
||||
}
|
||||
|
||||
public HistoryItem getHistoryItem(String historyItemId) {
|
||||
return sendRequest(new GetHistoryItemByIdRequest(historyItemId));
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.andrewcpu.elevenlabs.api.impl;
|
||||
|
||||
import net.andrewcpu.elevenlabs.api.ElevenLabsAPI;
|
||||
import net.andrewcpu.elevenlabs.enums.ElevenLabsVoiceModel;
|
||||
import net.andrewcpu.elevenlabs.enums.StreamLatencyOptimization;
|
||||
import net.andrewcpu.elevenlabs.model.voice.VoiceSettings;
|
||||
import net.andrewcpu.elevenlabs.requests.sts.PostSpeechToSpeechRequest;
|
||||
@@ -25,4 +26,22 @@ public class SpeechToSpeechAPI extends ElevenLabsAPI {
|
||||
public InputStream generateSpeechToSpeechStream(String voiceId, VoiceSettings voiceSettings, String modelId, File audio) {
|
||||
return generateSpeechToSpeechStream(voiceId, voiceSettings, modelId, audio, StreamLatencyOptimization.getDefault());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public File generateSpeechToSpeech(String voiceId, VoiceSettings voiceSettings, ElevenLabsVoiceModel model, File audio) {
|
||||
return generateSpeechToSpeech(voiceId, voiceSettings, model.getModelId(), audio, StreamLatencyOptimization.getDefault());
|
||||
}
|
||||
|
||||
public File generateSpeechToSpeech(String voiceId, VoiceSettings voiceSettings, ElevenLabsVoiceModel model, File audio, StreamLatencyOptimization latencyOptimization) {
|
||||
return sendRequest(new PostSpeechToSpeechRequest(voiceId, voiceSettings,audio, model.getModelId(), latencyOptimization));
|
||||
}
|
||||
|
||||
public InputStream generateSpeechToSpeechStream(String voiceId, VoiceSettings voiceSettings, ElevenLabsVoiceModel model, File audio, StreamLatencyOptimization streamLatencyOptimization) {
|
||||
return sendRequest(new PostSpeechToSpeechStreamedRequest(voiceId, voiceSettings, audio, model.getModelId(), streamLatencyOptimization));
|
||||
}
|
||||
|
||||
public InputStream generateSpeechToSpeechStream(String voiceId, VoiceSettings voiceSettings, ElevenLabsVoiceModel model, File audio) {
|
||||
return generateSpeechToSpeechStream(voiceId, voiceSettings, model.getModelId(), audio, StreamLatencyOptimization.getDefault());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package net.andrewcpu.elevenlabs.builders;
|
||||
|
||||
public class SpeechGenerationBuilder {
|
||||
public static SpeechToSpeechBuilder speechToSpeech() {
|
||||
return new SpeechToSpeechBuilder();
|
||||
}
|
||||
|
||||
public static TextToSpeechBuilder textToSpeech() {
|
||||
return new TextToSpeechBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package net.andrewcpu.elevenlabs.builders;
|
||||
|
||||
import net.andrewcpu.elevenlabs.builders.impl.s2s.SpeechToSpeechFileBuilder;
|
||||
import net.andrewcpu.elevenlabs.builders.impl.s2s.SpeechToSpeechStreamedBuilder;
|
||||
|
||||
public class SpeechToSpeechBuilder {
|
||||
|
||||
public SpeechToSpeechStreamedBuilder streamed() {
|
||||
return new SpeechToSpeechStreamedBuilder();
|
||||
}
|
||||
|
||||
public SpeechToSpeechFileBuilder file() {
|
||||
return new SpeechToSpeechFileBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package net.andrewcpu.elevenlabs.builders;
|
||||
|
||||
|
||||
import net.andrewcpu.elevenlabs.builders.impl.tts.TextToSpeechFileBuilder;
|
||||
import net.andrewcpu.elevenlabs.builders.impl.tts.TextToSpeechStreamedBuilder;
|
||||
|
||||
public class TextToSpeechBuilder {
|
||||
public TextToSpeechStreamedBuilder streamed() {
|
||||
return new TextToSpeechStreamedBuilder();
|
||||
}
|
||||
|
||||
public TextToSpeechFileBuilder file() {
|
||||
return new TextToSpeechFileBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package net.andrewcpu.elevenlabs.builders.abstracts;
|
||||
|
||||
import net.andrewcpu.elevenlabs.ElevenLabs;
|
||||
import net.andrewcpu.elevenlabs.builders.SpeechToSpeechBuilder;
|
||||
import net.andrewcpu.elevenlabs.builders.TextToSpeechBuilder;
|
||||
import net.andrewcpu.elevenlabs.enums.ElevenLabsVoiceModel;
|
||||
import net.andrewcpu.elevenlabs.enums.GeneratedAudioOutputFormat;
|
||||
import net.andrewcpu.elevenlabs.enums.StreamLatencyOptimization;
|
||||
import net.andrewcpu.elevenlabs.model.voice.Voice;
|
||||
import net.andrewcpu.elevenlabs.model.voice.VoiceSettings;
|
||||
|
||||
public abstract class AbstractSpeechGenerationBuilder<T, F> {
|
||||
private String voiceId;
|
||||
private VoiceSettings voiceSettings;
|
||||
private String modelId = ElevenLabs.getDefaultModel();
|
||||
private StreamLatencyOptimization latencyOptimization = StreamLatencyOptimization.getDefault();
|
||||
private GeneratedAudioOutputFormat generatedAudioOutputFormat = GeneratedAudioOutputFormat.getDefault();
|
||||
public abstract T self();
|
||||
|
||||
public abstract F build();
|
||||
|
||||
|
||||
public GeneratedAudioOutputFormat getGeneratedAudioOutputFormat() {
|
||||
return generatedAudioOutputFormat;
|
||||
}
|
||||
|
||||
public T setGeneratedAudioOutputFormat(GeneratedAudioOutputFormat generatedAudioOutputFormat) {
|
||||
this.generatedAudioOutputFormat = generatedAudioOutputFormat;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getVoiceId() {
|
||||
return voiceId;
|
||||
}
|
||||
|
||||
public T setVoiceId(String voiceId) {
|
||||
this.voiceId = voiceId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public VoiceSettings getVoiceSettings() {
|
||||
return voiceSettings;
|
||||
}
|
||||
|
||||
public T setVoiceSettings(VoiceSettings voiceSettings) {
|
||||
this.voiceSettings = voiceSettings;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getModelId() {
|
||||
return modelId;
|
||||
}
|
||||
|
||||
public T setModelId(String modelId) {
|
||||
this.modelId = modelId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public StreamLatencyOptimization getLatencyOptimization() {
|
||||
return latencyOptimization;
|
||||
}
|
||||
|
||||
public T setLatencyOptimization(StreamLatencyOptimization latencyOptimization) {
|
||||
this.latencyOptimization = latencyOptimization;
|
||||
return self();
|
||||
}
|
||||
|
||||
public T setVoice(Voice voice) {
|
||||
this.voiceId = voice.getVoiceId();
|
||||
if(voice.getSettings() == null) voice.fetchSettings();
|
||||
this.voiceSettings = voice.getSettings();
|
||||
return self();
|
||||
}
|
||||
|
||||
public T setModel(ElevenLabsVoiceModel voiceModel) {
|
||||
this.modelId = voiceModel.getModelId();
|
||||
return self();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package net.andrewcpu.elevenlabs.builders.impl.s2s;
|
||||
|
||||
import net.andrewcpu.elevenlabs.ElevenLabs;
|
||||
import net.andrewcpu.elevenlabs.builders.abstracts.AbstractSpeechGenerationBuilder;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class SpeechToSpeechFileBuilder extends AbstractSpeechGenerationBuilder<SpeechToSpeechFileBuilder, File> {
|
||||
private File inputFile;
|
||||
|
||||
public File getInputFile() {
|
||||
return inputFile;
|
||||
}
|
||||
|
||||
public SpeechToSpeechFileBuilder setInputFile(File inputFile) {
|
||||
this.inputFile = inputFile;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpeechToSpeechFileBuilder self() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File build() {
|
||||
return ElevenLabs
|
||||
.getSpeechToSpeechAPI()
|
||||
.generateSpeechToSpeech(getVoiceId(), getVoiceSettings(),getModelId(),getInputFile(),getLatencyOptimization());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package net.andrewcpu.elevenlabs.builders.impl.s2s;
|
||||
|
||||
import net.andrewcpu.elevenlabs.ElevenLabs;
|
||||
import net.andrewcpu.elevenlabs.builders.abstracts.AbstractSpeechGenerationBuilder;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class SpeechToSpeechStreamedBuilder extends AbstractSpeechGenerationBuilder<SpeechToSpeechStreamedBuilder, InputStream> {
|
||||
private File inputFile;
|
||||
|
||||
public File getInputFile() {
|
||||
return inputFile;
|
||||
}
|
||||
|
||||
public SpeechToSpeechStreamedBuilder setInputFile(File inputFile) {
|
||||
this.inputFile = inputFile;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpeechToSpeechStreamedBuilder self() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream build() {
|
||||
return ElevenLabs
|
||||
.getSpeechToSpeechAPI()
|
||||
.generateSpeechToSpeechStream(getVoiceId(), getVoiceSettings(),getModelId(),getInputFile(),getLatencyOptimization());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package net.andrewcpu.elevenlabs.builders.impl.tts;
|
||||
|
||||
import net.andrewcpu.elevenlabs.ElevenLabs;
|
||||
import net.andrewcpu.elevenlabs.builders.abstracts.AbstractSpeechGenerationBuilder;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class TextToSpeechFileBuilder extends AbstractSpeechGenerationBuilder<TextToSpeechFileBuilder, File> {
|
||||
private String text;
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public TextToSpeechFileBuilder setText(String text) {
|
||||
this.text = text;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextToSpeechFileBuilder self() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File build() {
|
||||
return ElevenLabs
|
||||
.getTextToSpeechAPI()
|
||||
.generateTextToSpeech(getVoiceId(), getText(),getModelId(), getGeneratedAudioOutputFormat(),getLatencyOptimization(), getVoiceSettings());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package net.andrewcpu.elevenlabs.builders.impl.tts;
|
||||
|
||||
import net.andrewcpu.elevenlabs.ElevenLabs;
|
||||
import net.andrewcpu.elevenlabs.builders.abstracts.AbstractSpeechGenerationBuilder;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
public class TextToSpeechStreamedBuilder extends AbstractSpeechGenerationBuilder<TextToSpeechStreamedBuilder, InputStream> {
|
||||
private String text;
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public TextToSpeechStreamedBuilder setText(String text) {
|
||||
this.text = text;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextToSpeechStreamedBuilder self() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream build() {
|
||||
return ElevenLabs
|
||||
.getTextToSpeechAPI()
|
||||
.generateTextToSpeechStreamed(getVoiceId(), getText(),getModelId(), getGeneratedAudioOutputFormat(),getLatencyOptimization(), getVoiceSettings());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package net.andrewcpu.elevenlabs.enums;
|
||||
|
||||
public enum ElevenLabsVoiceModel {
|
||||
ELEVEN_MULTILINGUAL_V2("eleven_multilingual_v2", "Eleven Multilingual v2"),
|
||||
ELEVEN_ENGLISH_V2("eleven_english_v2", "Eleven English v2"),
|
||||
ELEVEN_MULTILINGUAL_V1("eleven_multilingual_v1", "Eleven Multilingual v1"),
|
||||
ELEVEN_MONOLINGUAL_V1("eleven_monolingual_v1", "Eleven English v1"),
|
||||
ELEVEN_TURBO_V2("eleven_turbo_v2", "Eleven Turbo v2"),
|
||||
ELEVEN_ENGLISH_STS_V2("eleven_english_sts_v2", "Eleven English v2", true),
|
||||
;
|
||||
final String modelId;
|
||||
final String modelLabel;
|
||||
final boolean supportsSpeechToSpeech;
|
||||
|
||||
ElevenLabsVoiceModel(String modelId, String modelLabel, boolean supportsSpeechToSpeech) {
|
||||
this.modelId = modelId;
|
||||
this.modelLabel = modelLabel;
|
||||
this.supportsSpeechToSpeech = supportsSpeechToSpeech;
|
||||
}
|
||||
|
||||
ElevenLabsVoiceModel(String modelId, String modelLabel) {
|
||||
this(modelId, modelLabel, false);
|
||||
}
|
||||
|
||||
public String getModelId() {
|
||||
return modelId;
|
||||
}
|
||||
|
||||
public String getModelLabel() {
|
||||
return modelLabel;
|
||||
}
|
||||
}
|
||||
@@ -8,12 +8,25 @@ import net.andrewcpu.elevenlabs.model.ElevenModel;
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class History extends ElevenModel {
|
||||
|
||||
public static final int DEFAULT_HISTORY_PAGE_SIZE = 100;
|
||||
public static History get() {
|
||||
return ElevenLabs.getHistoryAPI().getHistory();
|
||||
}
|
||||
public static History get(String afterHistoryId) {
|
||||
return ElevenLabs.getHistoryAPI().getHistory(afterHistoryId);
|
||||
}
|
||||
public static History get(int pageSize, String afterHistoryId) {
|
||||
return ElevenLabs.getHistoryAPI().getHistory(pageSize, afterHistoryId);
|
||||
}
|
||||
|
||||
public static History get(int pageSize) {
|
||||
return ElevenLabs.getHistoryAPI().getHistory(pageSize, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@JsonProperty("history")
|
||||
private List<HistoryItem> historyItems;
|
||||
@@ -64,6 +77,13 @@ public class History extends ElevenModel {
|
||||
return ElevenLabs.getHistoryAPI().getHistoryItemAudio(Arrays.stream(items).map(HistoryItem::getHistoryItemId).toArray(String[]::new));
|
||||
}
|
||||
|
||||
public Optional<History> next(int pageSize) {
|
||||
if(!hasMore) {
|
||||
return Optional.empty();
|
||||
}
|
||||
return Optional.of(ElevenLabs.getHistoryAPI().getHistory(pageSize, lastHistoryItemId));
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@@ -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.util.ElevenNetworkUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
@@ -131,6 +132,10 @@ public class HistoryItem extends ElevenModel {
|
||||
return ElevenLabs.getHistoryAPI().getHistoryItemAudio(historyItemId);
|
||||
}
|
||||
|
||||
public String getDownloadUrl() {
|
||||
return ElevenNetworkUtil.getHistoryItemUrl(historyItemId);
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@@ -37,6 +37,4 @@ public abstract class ElevenLabsRequest<T> {
|
||||
}
|
||||
|
||||
public abstract Object getPayload();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,8 +3,36 @@ package net.andrewcpu.elevenlabs.requests.history;
|
||||
import net.andrewcpu.elevenlabs.model.history.History;
|
||||
import net.andrewcpu.elevenlabs.requests.GetRequest;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static net.andrewcpu.elevenlabs.model.history.History.DEFAULT_HISTORY_PAGE_SIZE;
|
||||
|
||||
public class GetHistoryRequest extends GetRequest<History> {
|
||||
private final int pageSize;
|
||||
private final String startAfterHistoryId;
|
||||
|
||||
public GetHistoryRequest() {
|
||||
this(DEFAULT_HISTORY_PAGE_SIZE, null);
|
||||
}
|
||||
|
||||
public GetHistoryRequest(String startAfterHistoryId) {
|
||||
this(DEFAULT_HISTORY_PAGE_SIZE, startAfterHistoryId);
|
||||
}
|
||||
|
||||
public GetHistoryRequest(int pageSize, String startAfterHistoryId) {
|
||||
super("v1/history", History.class);
|
||||
this.pageSize = pageSize;
|
||||
this.startAfterHistoryId = startAfterHistoryId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getQueryParameters() {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("page_size", String.valueOf(pageSize));
|
||||
if(startAfterHistoryId != null) {
|
||||
params.put("start_after_history_item_id", startAfterHistoryId);
|
||||
}
|
||||
return params;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package net.andrewcpu.elevenlabs.requests.projects;
|
||||
import net.andrewcpu.elevenlabs.requests.DeleteRequest;
|
||||
|
||||
public class DeleteChapterByIdRequest extends DeleteRequest<String> {
|
||||
|
||||
public DeleteChapterByIdRequest(String projectId, String chapterId) {
|
||||
super("v1/projects/" + projectId + "/chapters/" + chapterId, String.class);
|
||||
}
|
||||
|
||||
@@ -7,5 +7,4 @@ public class GetChapterSnapshotsRequest extends GetRequest<ChapterSnapshotsModel
|
||||
public GetChapterSnapshotsRequest(String projectId, String chapterId) {
|
||||
super("v1/projects/" + projectId + "/chapters/" + chapterId + "/snapshots", ChapterSnapshotsModelResponse.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,5 +6,4 @@ public class PostConvertChapterRequest extends PostRequest<String> {
|
||||
public PostConvertChapterRequest(String projectId, String chapterId) {
|
||||
super("v1/projects/" + projectId + "/chapters/" + chapterId + "/convert", String.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,5 +6,4 @@ public class PostConvertProjectRequest extends PostRequest<String> {
|
||||
public PostConvertProjectRequest(String projectId) {
|
||||
super("v1/projects/" + projectId + "/convert", String.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,5 +8,4 @@ public class PostStreamChapterSnapshotAudioRequest extends PostRequest<InputStre
|
||||
public PostStreamChapterSnapshotAudioRequest(String projectId, String chapterId, String chapterSnapshotId) {
|
||||
super("v1/projects/" + projectId + "/chapters/" + chapterId + "/snapshots/" + chapterSnapshotId + "/stream", InputStream.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,5 +8,4 @@ public class PostStreamProjectSnapshotAudioRequest extends PostRequest<InputStre
|
||||
public PostStreamProjectSnapshotAudioRequest(String projectId, String snapshotId) {
|
||||
super("v1/projects/" + projectId + "/snapshots/" + snapshotId + "/stream", InputStream.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import net.andrewcpu.elevenlabs.model.user.Subscription;
|
||||
import net.andrewcpu.elevenlabs.requests.GetRequest;
|
||||
|
||||
public class GetSubscriptionRequest extends GetRequest<Subscription> {
|
||||
|
||||
public GetSubscriptionRequest() {
|
||||
super("v1/user/subscription", Subscription.class);
|
||||
}
|
||||
|
||||
@@ -25,5 +25,4 @@ public class GetVoiceRequest extends GetRequest<Voice> {
|
||||
payload.put("with_settings", String.valueOf(withSettings));
|
||||
return payload;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -137,6 +137,10 @@ public class ElevenNetworkUtil {
|
||||
return request;
|
||||
}
|
||||
|
||||
public static String getHistoryItemUrl(String historyItemId) {
|
||||
return BASE_URL + "v1/history/" + historyItemId + "/audio";
|
||||
}
|
||||
|
||||
public static <T> T sendRequest(HttpRequestType method, String path, Object payload, Class<T> responseType) {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
path = BASE_URL + path;
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
package net.andrewcpu.elevenlabs;
|
||||
|
||||
|
||||
import net.andrewcpu.elevenlabs.builders.SpeechGenerationBuilder;
|
||||
import net.andrewcpu.elevenlabs.builders.abstracts.AbstractSpeechGenerationBuilder;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class ElevenLabsTest {
|
||||
public static final String ELEVEN_LABS_API_KEY = System.getenv("ELEVENLABS_API_KEY");
|
||||
public static final String TEST_VOICE = "ZjJOFdM86g4E9U6OhzUo";
|
||||
|
||||
@@ -8,7 +8,9 @@ import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static net.andrewcpu.elevenlabs.model.history.History.DEFAULT_HISTORY_PAGE_SIZE;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class HistoryTest extends ElevenLabsTest {
|
||||
@@ -44,5 +46,7 @@ public class HistoryTest extends ElevenLabsTest {
|
||||
output.delete();
|
||||
}));
|
||||
|
||||
Optional<History> nextHistory = history.next(DEFAULT_HISTORY_PAGE_SIZE);
|
||||
assertTrue(nextHistory.isPresent());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class AvailableModelsTest extends ElevenLabsTest {
|
||||
GenerationTypeModel[] models = null;
|
||||
try{
|
||||
models = ElevenLabs.getModelsAPI().getAvailableModels();
|
||||
System.out.println(Arrays.stream(models).map(Object::toString).collect(Collectors.toList()));
|
||||
Arrays.stream(models).map(o -> o.getModelId() + "," + o.getName()).forEach(System.out::println);
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
fail("Failed to get voice type models: " + e.getMessage());
|
||||
|
||||
Reference in New Issue
Block a user