Ein nicht offizieller elf Labors-Sprachsynthese RESTful Client.
Ich bin nicht mit elf Labs verbunden und ein Konto mit API -Zugriff ist erforderlich.
Alle Urheberrechte, Marken, Logos und Vermögenswerte sind Eigentum ihrer jeweiligen Eigentümer.
Installieren Sie Paket ElevenLabs-DotNet von Nuget. Hier ist wie über die Befehlszeile:
Install-Package ElevenLabs - DotNet dotnet add package ElevenLabs-DotNet
Möchten Sie elf Labs in der Unity Game Engine verwenden? Schauen Sie sich unser Einheitspaket auf OpenUpM an:
Es gibt 3 Möglichkeiten, Ihre API -Schlüssel in der Reihenfolge der Vorrang zu liefern:
var api = new ElevenLabsClient ( "yourApiKey" ) ; Oder ein ElevenLabsAuthentication manuell erstellen
var api = new ElevenLabsClient ( new ElevenLabsAuthentication ( "yourApiKey" ) ) ; Versuche, API -Schlüssel aus einer Konfigurationsdatei .elevenlabs zu laden.
Um eine Konfigurationsdatei zu erstellen, erstellen Sie eine neue Textdatei mit dem Namen .elevenlabs und enthält die Zeile:
{
"apiKey" : " yourApiKey " ,
}Sie können die Datei auch direkt mit dem bekannten Pfad laden, indem Sie eine statische Methode in der Authentifizierung aufrufen:
var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromDirectory ( "your/path/to/.elevenlabs" ) ) ; ; Verwenden Sie die Umgebungsvariablen Ihres Systems an, geben Sie einen API -Schlüssel an.
ELEVEN_LABS_API_KEY . var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromEnv ( ) ) ;Wenn Sie entweder die Elevenlabs-Dotnet oder die Pakete von Com.rest.Elevenlabs direkt in Ihrer Front-End-App enthüllen, können Sie Ihre API-Schlüssel und andere vertrauliche Informationen enthüllen. Um dieses Risiko zu mildern, wird empfohlen, eine Zwischen-API einzurichten, die im Namen Ihrer Front-End-App an elfLabs anfragen. Diese Bibliothek kann sowohl für Front-End- als auch für Vermittler-Hostkonfigurationen verwendet werden, um eine sichere Kommunikation mit der ElevenLabs-API zu gewährleisten.
Im Vorderseite müssen Sie Ihre Benutzer mit Ihrem bevorzugten OAuth -Anbieter sicher authentifizieren. Sobald der Benutzer authentifiziert ist, tauschen Sie Ihr benutzerdefiniertes Author -Token mit Ihrem API -Schlüssel im Backend aus.
Folgen Sie folgenden Schritten:
ElevenLabsAuthentication -Objekt und passieren Sie im benutzerdefinierten Token.ElevenLabsClientSettings -Objekt und geben Sie die Domäne an, in der sich Ihre Zwischen -API befindet.auth und settings an den ElevenLabsClient -Konstruktor, wenn Sie die Client -Instanz erstellen.Hier ist ein Beispiel für die Einrichtung des vorderen Endes:
var authToken = await LoginAsync ( ) ;
var auth = new ElevenLabsAuthentication ( authToken ) ;
var settings = new ElevenLabsClientSettings ( domain : "api.your-custom-domain.com" ) ;
var api = new ElevenLabsClient ( auth , settings ) ;Mit diesem Setup kann Ihre Front-End-Anwendung sicher mit Ihrem Backend kommunizieren, das die elfLabs-dotnet-Proxy verwendet, die dann Anfragen an die ElevenLabs-API weiterleitet. Dies stellt sicher, dass Ihre elflabs -API -Schlüssel und andere empfindliche Informationen während des gesamten Prozesses sicher bleiben.
In diesem Beispiel zeigen wir, wie ElevenLabsProxyStartup in einer neuen ASP.NET -Kern -Web -App eingerichtet und verwendet werden. Der Proxy -Server behandelt die Authentifizierung und die Anfragen an die ElevenLabs -API, um sicherzustellen, dass Ihre API -Schlüssel und andere sensible Informationen sicher bleiben.
Install-Package ElevenLabs-DotNet-Proxydotnet add package ElevenLabs-DotNet-Proxy<PackageReference Include="ElevenLabs-DotNet-Proxy" />AbstractAuthenticationFilter erbt und die ValidateAuthentication -Methode überschreibt. Dadurch wird der IAuthenticationFilter implementiert, mit dem Sie das Benutzersitzungstoken anhand Ihres internen Servers überprüfen.Program.cs eine neue Proxy -Webanwendung, indem Sie die Methode mit ElevenLabsProxyStartup.CreateWebApplication anrufen und Ihre benutzerdefinierte AuthenticationFilter als Typargument übergeben.ElevenLabsAuthentication und ElevenLabsClientSettings , wie Sie es normalerweise mit Ihren API -Tasten, Org -IDs oder Azure -Einstellungen tun. public partial class Program
{
private class AuthenticationFilter : AbstractAuthenticationFilter
{
public override async Task ValidateAuthenticationAsync ( IHeaderDictionary request )
{
await Task . CompletedTask ; // remote resource call
// You will need to implement your own class to properly test
// custom issued tokens you've setup for your end users.
if ( ! request [ "xi-api-key" ] . ToString ( ) . Contains ( TestUserToken ) )
{
throw new AuthenticationException ( "User is not authorized" ) ;
}
}
}
public static void Main ( string [ ] args )
{
var auth = ElevenLabsAuthentication . LoadFromEnv ( ) ;
var client = new ElevenLabsClient ( auth ) ;
ElevenLabsProxyStartup . CreateWebApplication < AuthenticationFilter > ( args , client ) . Run ( ) ;
}
}Sobald Sie Ihren Proxy -Server eingerichtet haben, können Ihre Endbenutzer jetzt authentifizierte Anfragen an Ihre Proxy -API anstelle der ElevenLabs -API stellen. Der Proxy -Server behandelt die Authentifizierung und die Anfragen an die ElevenLabs -API, um sicherzustellen, dass Ihre API -Schlüssel und andere sensible Informationen sicher bleiben.
Text in Sprache konvertieren.
var api = new ElevenLabsClient ( ) ;
var text = "The quick brown fox jumps over the lazy dog." ;
var voice = ( await api . VoicesEndpoint . GetAllVoicesAsync ( ) ) . FirstOrDefault ( ) ;
var request = new TextToSpeechRequest ( voice , text ) ;
var voiceClip = await api . TextToSpeechEndpoint . TextToSpeechAsync ( request ) ;
await File . WriteAllBytesAsync ( $ " { voiceClip . Id } .mp3" , voiceClip . ClipData . ToArray ( ) ) ; Text in die Sprache streamen.
var api = new ElevenLabsClient ( ) ;
var text = "The quick brown fox jumps over the lazy dog." ;
var voice = ( await api . VoicesEndpoint . GetAllVoicesAsync ( ) ) . FirstOrDefault ( ) ;
string fileName = "myfile.mp3" ;
using var outputFileStream = File . OpenWrite ( fileName ) ;
var request = new TextToSpeechRequest ( voice , text ) ;
var voiceClip = await api . TextToSpeechEndpoint . TextToSpeechAsync ( request ,
partialClipCallback : async ( partialClip ) =>
{
// Write the incoming data to the output file stream.
// Alternatively you can play this clip data directly.
await outputFileStream . WriteAsync ( partialClip . ClipData ) ;
} ) ;Zugriff auf Stimmen, die entweder vom Benutzer oder elfLabs erstellt wurden.
Erhält eine Liste gemeinsamer Stimmen in der öffentlichen Sprachbibliothek.
var api = new ElevenLabsClient ( ) ;
var results = await ElevenLabsClient . SharedVoicesEndpoint . GetSharedVoicesAsync ( ) ;
foreach ( var voice in results . Voices )
{
Console . WriteLine ( $ " { voice . OwnerId } | { voice . VoiceId } | { voice . Date } | { voice . Name } " ) ;
} Erhält eine Liste aller verfügbaren Stimmen, die Ihrem Konto zur Verfügung stehen.
var api = new ElevenLabsClient ( ) ;
var allVoices = await api . VoicesEndpoint . GetAllVoicesAsync ( ) ;
foreach ( var voice in allVoices )
{
Console . WriteLine ( $ " { voice . Id } | { voice . Name } | similarity boost: { voice . Settings ? . SimilarityBoost } | stability: { voice . Settings ? . Stability } " ) ;
} Ruft die globalen Standard -Spracheinstellungen ab.
var api = new ElevenLabsClient ( ) ;
var result = await api . VoicesEndpoint . GetDefaultVoiceSettingsAsync ( ) ;
Console . WriteLine ( $ "stability: { result . Stability } | similarity boost: { result . SimilarityBoost } " ) ; var api = new ElevenLabsClient ( ) ;
var voice = await api . VoicesEndpoint . GetVoiceAsync ( "voiceId" ) ;
Console . WriteLine ( $ " { voice . Id } | { voice . Name } | { voice . PreviewUrl } " ) ; Bearbeiten Sie die Einstellungen für eine bestimmte Stimme.
var api = new ElevenLabsClient ( ) ;
var success = await api . VoicesEndpoint . EditVoiceSettingsAsync ( voice , new VoiceSettings ( 0.7f , 0.7f ) ) ;
Console . WriteLine ( $ "Was successful? { success } " ) ; var api = new ElevenLabsClient ( ) ;
var labels = new Dictionary < string , string >
{
{ "accent" , "american" }
} ;
var audioSamplePaths = new List < string > ( ) ;
var voice = await api . VoicesEndpoint . AddVoiceAsync ( "Voice Name" , audioSamplePaths , labels ) ; var api = new ElevenLabsClient ( ) ;
var labels = new Dictionary < string , string >
{
{ "age" , "young" }
} ;
var audioSamplePaths = new List < string > ( ) ;
var success = await api . VoicesEndpoint . EditVoiceAsync ( voice , audioSamplePaths , labels ) ;
Console . WriteLine ( $ "Was successful? { success } " ) ; var api = new ElevenLabsClient ( ) ;
var success = await api . VoicesEndpoint . DeleteVoiceAsync ( voiceId ) ;
Console . WriteLine ( $ "Was successful? { success } " ) ; Zugriff auf Ihre Samples, die von Ihnen erstellt wurden, wenn Sie Stimmen klonen.
var api = new ElevenLabsClient ( ) ;
var voiceClip = await api . VoicesEndpoint . DownloadVoiceSampleAsync ( voice , sample ) ;
await File . WriteAllBytesAsync ( $ " { voiceClip . Id } .mp3" , voiceClip . ClipData . ToArray ( ) ) ; var api = new ElevenLabsClient ( ) ;
var success = await api . VoicesEndpoint . DeleteVoiceSampleAsync ( voiceId , sampleId ) ;
Console . WriteLine ( $ "Was successful? { success } " ) ;Dubs stellten Audio- oder Videodatei in eine bestimmte Sprache zur Verfügung.
var api = new ElevenLabsClient ( ) ;
// from URI
var request = new DubbingRequest ( new Uri ( "https://youtu.be/Zo5-rhYOlNk" ) , "ja" , "en" , 1 , true ) ;
// from file
var request = new DubbingRequest ( filePath , "es" , "en" , 1 ) ;
var metadata = await api . DubbingEndpoint . DubAsync ( request , progress : new Progress < DubbingProjectMetadata > ( metadata =>
{
switch ( metadata . Status )
{
case "dubbing" :
Console . WriteLine ( $ "Dubbing for { metadata . DubbingId } in progress... Expected Duration: { metadata . ExpectedDurationSeconds : 0.00 } seconds" ) ;
break ;
case "dubbed" :
Console . WriteLine ( $ "Dubbing for { metadata . DubbingId } complete in { metadata . TimeCompleted . TotalSeconds : 0.00 } seconds!" ) ;
break ;
default :
Console . WriteLine ( $ "Status: { metadata . Status } " ) ;
break ;
}
} ) ) ; Gibt Metadaten über ein Synchronisationsprojekt zurück, einschließlich der Frage, ob es noch im Gange ist oder nicht.
var api = new ElevenLabsClient ( ) ;
var metadata = api . await GetDubbingProjectMetadataAsync ( "dubbing - id");Gibt die Datei als Streamed -Datei zurück.
Notiz
Videos werden im MP4 -Format zurückgegeben und Audio Nur Dubs werden in MP3 zurückgegeben.
var assetsDir = Path . GetFullPath ( "../../../Assets" ) ;
var dubbedPath = new FileInfo ( Path . Combine ( assetsDir , $ "online.dubbed. { request . TargetLanguage } .mp4" ) ) ;
{
await using var fs = File . Open ( dubbedPath . FullName , FileMode . Create ) ;
await foreach ( var chunk in ElevenLabsClient . DubbingEndpoint . GetDubbedFileAsync ( metadata . DubbingId , request . TargetLanguage ) )
{
await fs . WriteAsync ( chunk ) ;
}
} Gibt das Transkript für den Dub im gewünschten Format zurück.
var assetsDir = Path . GetFullPath ( "../../../Assets" ) ;
var transcriptPath = new FileInfo ( Path . Combine ( assetsDir , $ "online.dubbed. { request . TargetLanguage } .srt" ) ) ;
{
var transcriptFile = await api . DubbingEndpoint . GetTranscriptForDubAsync ( metadata . DubbingId , request . TargetLanguage ) ;
await File . WriteAllTextAsync ( transcriptPath . FullName , transcriptFile ) ;
} Löscht ein Synchronisationsprojekt.
var api = new ElevenLabsClient ( ) ;
await api . DubbingEndpoint . DeleteDubbingProjectAsync ( "dubbing-id" ) ;API, die Text in Sounds umwandelt und das fortschrittlichste AI -Audio -Modell aller Zeiten verwendet.
var api = new ElevenLabsClient ( ) ;
var request = new SoundGenerationRequest ( "Star Wars Light Saber parry" ) ;
var clip = await api . SoundGenerationEndpoint . GenerateSoundAsync ( request ) ;Zugriff auf Ihre zuvor synthetisierten Audioclips einschließlich seiner Metadaten.
Holen Sie sich Metadaten über alle Ihre generierten Audioen.
var api = new ElevenLabsClient ( ) ;
var historyItems = await api . HistoryEndpoint . GetHistoryAsync ( ) ;
foreach ( var item in historyItems . OrderBy ( historyItem => historyItem . Date ) )
{
Console . WriteLine ( $ " { item . State } { item . Date } | { item . Id } | { item . Text . Length } | { item . Text } " ) ;
} Informationen zu einem bestimmten Artikel erhalten.
var api = new ElevenLabsClient ( ) ;
var historyItem = await api . HistoryEndpoint . GetHistoryItemAsync ( voiceClip . Id ) ; var api = new ElevenLabsClient ( ) ;
var voiceClip = await api . HistoryEndpoint . DownloadHistoryAudioAsync ( historyItem ) ;
await File . WriteAllBytesAsync ( $ " { voiceClip . Id } .mp3" , voiceClip . ClipData . ToArray ( ) ) ; Laden Sie die letzten 100 History -Elemente oder die Sammlung bestimmter Elemente herunter.
var api = new ElevenLabsClient ( ) ;
var voiceClips = await api . HistoryEndpoint . DownloadHistoryItemsAsync ( ) ; var api = new ElevenLabsClient ( ) ;
var success = await api . HistoryEndpoint . DeleteHistoryItemAsync ( historyItem ) ;
Console . WriteLine ( $ "Was successful? { success } " ) ;Zugriff auf Ihre Benutzerinformationen und Abonnementstatus.
Erhält Informationen über Ihr Benutzerkonto mit elfLabs.
var api = new ElevenLabsClient ( ) ;
var userInfo = await api . UserEndpoint . GetUserInfoAsync ( ) ; Erhält Informationen über Ihr Abonnement mit elfLabs.
var api = new ElevenLabsClient ( ) ;
var subscriptionInfo = await api . UserEndpoint . GetSubscriptionInfoAsync ( ) ;