Klien Sintesis Suara Eleven Labs yang tidak resmi.
Saya tidak berafiliasi dengan ElevenLab dan akun dengan API Access diperlukan.
Semua hak cipta, merek dagang, logo, dan aset adalah milik pemiliknya masing -masing.
Instal Paket ElevenLabs-DotNet dari Nuget. Begini cara melalui baris perintah:
Install-Package ElevenLabs - DotNet dotnet add package ElevenLabs-DotNet
Ingin menggunakan ElevenLabs di Unity Game Engine? Lihat paket Unity kami di OpenUpm:
Ada 3 cara untuk memberikan kunci API Anda, dalam urutan prioritas:
var api = new ElevenLabsClient ( "yourApiKey" ) ; Atau membuat objek ElevenLabsAuthentication secara manual
var api = new ElevenLabsClient ( new ElevenLabsAuthentication ( "yourApiKey" ) ) ; Upaya memuat tombol API dari file konfigurasi, secara default .elevenlabs di direktori saat ini, secara opsional melintasi pohon direktori atau di direktori home pengguna.
Untuk membuat file konfigurasi, buat file teks baru bernama .elevenlabs dan berisi baris:
{
"apiKey" : " yourApiKey " ,
}Anda juga dapat memuat file secara langsung dengan jalur yang diketahui dengan memanggil metode statis dalam otentikasi:
var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromDirectory ( "your/path/to/.elevenlabs" ) ) ; ; Gunakan variabel lingkungan sistem Anda Tentukan kunci API untuk digunakan.
ELEVEN_LABS_API_KEY untuk kunci API Anda. var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromEnv ( ) ) ;Menggunakan paket Elevenlabs-Dotnet atau Com.Rest.Elevenlabs secara langsung di aplikasi front-end Anda dapat mengekspos kunci API Anda dan informasi sensitif lainnya. Untuk mengurangi risiko ini, disarankan untuk mengatur API menengah yang membuat permintaan ke sebelas laboratorium atas nama aplikasi front-end Anda. Perpustakaan ini dapat digunakan untuk konfigurasi host front-end dan perantara, memastikan komunikasi yang aman dengan API ElevenLabs.
Di ujung depan, Anda harus mengotentikasi pengguna Anda dengan aman menggunakan penyedia OAuth pilihan Anda. Setelah pengguna diautentikasi, bertukar token auth khusus Anda dengan kunci API Anda di backend.
Ikuti langkah -langkah ini:
ElevenLabsAuthentication baru dan lulus dalam token khusus.ElevenLabsClientSettings baru dan tentukan domain di mana API menengah Anda berada.auth dan settings baru Anda ke ElevenLabsClient Constructor saat Anda membuat instance klien.Berikut adalah contoh cara mengatur ujung depan:
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 ) ;Pengaturan ini memungkinkan aplikasi ujung depan Anda untuk berkomunikasi dengan aman dengan backend Anda yang akan menggunakan ElevenLabs-Dotnet-Proxy, yang kemudian meneruskan permintaan ke ElevenLabs API. Ini memastikan bahwa kunci API ElevenLabs Anda dan informasi sensitif lainnya tetap aman selama proses tersebut.
Dalam contoh ini, kami mendemonstrasikan cara mengatur dan menggunakan ElevenLabsProxyStartup dalam aplikasi web Core ASP.NET baru. Server proxy akan menangani otentikasi dan meneruskan permintaan ke ElevenLabs API, memastikan bahwa kunci API Anda dan informasi sensitif lainnya tetap aman.
Install-Package ElevenLabs-DotNet-Proxydotnet add package ElevenLabs-DotNet-Proxy<PackageReference Include="ElevenLabs-DotNet-Proxy" />AbstractAuthenticationFilter dan override metode ValidateAuthentication . Ini akan mengimplementasikan IAuthenticationFilter yang akan Anda gunakan untuk memeriksa token sesi pengguna terhadap server internal Anda.Program.cs , buat aplikasi web proxy baru dengan menelepon metode ElevenLabsProxyStartup.CreateWebApplication , meneruskan AuthenticationFilter khusus Anda sebagai argumen tipe.ElevenLabsAuthentication dan ElevenLabsClientSettings seperti biasanya dengan tombol API, ID Org, atau Azure Anda biasanya. 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 ( ) ;
}
}Setelah Anda mengatur server proxy Anda, pengguna akhir Anda sekarang dapat membuat permintaan yang diautentikasi ke API proxy Anda alih -alih langsung ke API ElevenLabs. Server proxy akan menangani otentikasi dan meneruskan permintaan ke ElevenLabs API, memastikan bahwa kunci API Anda dan informasi sensitif lainnya tetap aman.
Konversi teks menjadi pidato.
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 ( ) ) ; Streaming teks ke pidato.
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 ) ;
} ) ;Akses ke suara yang dibuat baik oleh pengguna atau sebelas laboratorium.
Mendapat daftar suara bersama di Perpustakaan Suara Publik.
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 } " ) ;
} Mendapat daftar semua suara yang tersedia yang tersedia untuk akun Anda.
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 } " ) ;
} Mendapat pengaturan suara default global.
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 } " ) ; Edit pengaturan untuk suara tertentu.
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 } " ) ; Akses ke sampel Anda, dibuat oleh Anda saat mengkloning suara.
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 menyediakan file audio atau video ke dalam bahasa yang diberikan.
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 ;
}
} ) ) ; Mengembalikan metadata tentang proyek dubbing, termasuk apakah masih sedang berlangsung atau tidak.
var api = new ElevenLabsClient ( ) ;
var metadata = api . await GetDubbingProjectMetadataAsync ( "dubbing - id");Mengembalikan file yang dijuluki sebagai file stream.
Catatan
Video akan dikembalikan dalam format MP4 dan Audio hanya Dubs akan dikembalikan dalam MP3.
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 ) ;
}
} Mengembalikan transkrip untuk dub dalam format yang diinginkan.
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 ) ;
} Menghapus proyek dubbing.
var api = new ElevenLabsClient ( ) ;
await api . DubbingEndpoint . DeleteDubbingProjectAsync ( "dubbing-id" ) ;API yang mengubah teks menjadi suara & menggunakan model audio AI paling canggih yang pernah ada.
var api = new ElevenLabsClient ( ) ;
var request = new SoundGenerationRequest ( "Star Wars Light Saber parry" ) ;
var clip = await api . SoundGenerationEndpoint . GenerateSoundAsync ( request ) ;Akses ke klip audio Anda yang sebelumnya disintesis termasuk metadata -nya.
Dapatkan metadata tentang semua audio yang Anda hasilkan.
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 } " ) ;
} Dapatkan informasi tentang item tertentu.
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 ( ) ) ; Unduh 100 item sejarah terakhir, atau koleksi item yang ditentukan.
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 } " ) ;Akses ke informasi pengguna dan status berlangganan Anda.
Mendapat informasi tentang akun pengguna Anda dengan ElevenLabs.
var api = new ElevenLabsClient ( ) ;
var userInfo = await api . UserEndpoint . GetUserInfoAsync ( ) ; Mendapat informasi tentang langganan Anda dengan ElevenLabs.
var api = new ElevenLabsClient ( ) ;
var subscriptionInfo = await api . UserEndpoint . GetSubscriptionInfoAsync ( ) ;