비공식적 인 11 개의 실험실 음성 합성 편안한 클라이언트.
ElevenLabs와 제휴하지 않으며 API 액세스가 필요한 계정이 필요합니다.
모든 저작권, 상표, 로고 및 자산은 해당 소유자의 자산입니다.
Nuget에서 패키지 ElevenLabs-DotNet 설치하십시오. 명령 줄을 통해 다음은 다음과 같습니다.
Install-Package ElevenLabs - DotNet dotnet add package ElevenLabs-DotNet
Unity Game Engine에서 elevenlabs를 사용하고 싶으십니까? OpenUpm에서 Unity 패키지를 확인하십시오.
우선 순위로 API 키를 제공하는 3 가지 방법이 있습니다.
var api = new ElevenLabsClient ( "yourApiKey" ) ; 또는 수동으로 ElevenLabsAuthentication 객체를 만듭니다
var api = new ElevenLabsClient ( new ElevenLabsAuthentication ( "yourApiKey" ) ) ; 구성 파일에서 기본적으로 현재 디렉토리의 .elevenlabs 에서 API 키를로드하려고 시도하여 디렉토리 트리 또는 사용자의 홈 디렉토리에서 선택적으로 전환합니다.
구성 파일을 만들려면 .elevenlabs 라는 새 텍스트 파일을 작성하고 라인을 포함하십시오.
{
"apiKey" : " yourApiKey " ,
}인증에서 정적 메소드를 호출하여 알려진 경로로 파일을 직접로드 할 수도 있습니다.
var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromDirectory ( "your/path/to/.elevenlabs" ) ) ; ; 시스템의 환경 변수를 사용하여 사용할 API 키를 지정하십시오.
ELEVEN_LABS_API_KEY 사용하십시오. var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromEnv ( ) ) ;프론트 엔드 앱에서 직접 ElevenLabs-Dotnet 또는 Com.Rest.elevenlabs 패키지를 사용하면 API 키 및 기타 민감한 정보를 노출시킬 수 있습니다. 이 위험을 완화하려면 프론트 엔드 앱을 대신하여 11 번 랩을 요청하는 중간 API를 설정하는 것이 좋습니다. 이 라이브러리는 프론트 엔드 및 중개 호스트 구성 모두에 활용하여 ElevenLabs API와의 안전한 통신을 보장 할 수 있습니다.
프론트 엔드 예에서는 선호하는 OAUTH 제공 업체를 사용하여 사용자를 안전하게 인증해야합니다. 사용자가 인증되면 Backend에서 API 키로 사용자 정의 인증 토큰을 교환하십시오.
다음 단계를 따르십시오.
ElevenLabsAuthentication 객체를 만들고 사용자 정의 토큰을 통과하십시오.ElevenLabsClientSettings 객체를 만들고 중간 API가있는 도메인을 지정하십시오.auth 및 settings 객체를 ElevenLabsClient 생성자로 전달합니다.다음은 프론트 엔드를 설정하는 방법의 예입니다.
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 ) ;이 설정을 사용하면 프론트 엔드 애플리케이션이 엘레 랩스-도트 넷-프로스를 사용하는 백엔드와 안전하게 통신 할 수 있으며,이를 통해 eLEVENLABS API에 요청을 전달합니다. 이를 통해 ElevenLabs API 키 및 기타 민감한 정보가 프로세스 전반에 걸쳐 안전하게 유지되도록합니다.
이 예에서는 새로운 ASP.NET Core Web 앱에서 ElevenLabsProxyStartup 설정하고 사용하는 방법을 보여줍니다. 프록시 서버는 ElevenLabs API에 대한 인증 및 전진 요청을 처리하여 API 키 및 기타 민감한 정보가 안전하게 유지되도록합니다.
Install-Package ElevenLabs-DotNet-Proxydotnet add package ElevenLabs-DotNet-Proxy<PackageReference Include="ElevenLabs-DotNet-Proxy" /> 편집AbstractAuthenticationFilter 에서 상속하는 새로운 클래스를 작성하고 ValidateAuthentication 방법을 무시하십시오. 이렇게하면 내부 서버에 대한 사용자 세션 토큰을 확인하는 데 사용할 IAuthenticationFilter 구현됩니다.Program.cs 에서 ElevenLabsProxyStartup.CreateWebApplication 메소드를 호출하여 사용자 정의 AuthenticationFilter 유형 인수로 전달하여 새로운 프록시 웹 애플리케이션을 만듭니다.ElevenLabsAuthentication 및 ElevenLabsClientSettings 만듭니다. 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 ( ) ;
}
}프록시 서버를 설정 한 후에는 최종 사용자가 ElevenLabs API 직접 대신 프록시 API에 인증 된 요청을 할 수 있습니다. 프록시 서버는 ElevenLabs API에 대한 인증 및 전진 요청을 처리하여 API 키 및 기타 민감한 정보가 안전하게 유지되도록합니다.
텍스트를 음성으로 변환합니다.
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 ( ) ) ; 연설에 스트리밍 텍스트.
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 ) ;
} ) ;사용자 또는 엘레브 라브가 만든 목소리에 대한 액세스.
공개 음성 라이브러리에서 공유 음성 목록을 얻습니다.
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 } " ) ;
} 귀하의 계정에 사용할 수있는 모든 사용 가능한 목소리 목록을 얻습니다.
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 } " ) ;
} 글로벌 기본 음성 설정을 가져옵니다.
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 } " ) ; 특정 음성에 대한 설정을 편집하십시오.
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 } " ) ; 목소리를 복제 할 때 만들어진 샘플에 대한 액세스.
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 } " ) ;더빙은 오디오 또는 비디오 파일을 주어진 언어로 제공했습니다.
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 ;
}
} ) ) ; 아직 진행 중인지 아닌지를 포함하여 더빙 프로젝트에 대한 메타 데이터를 반환합니다.
var api = new ElevenLabsClient ( ) ;
var metadata = api . await GetDubbingProjectMetadataAsync ( "dubbing - id");더빙 된 파일을 스트리밍 파일로 반환합니다.
메모
비디오는 MP4 형식으로 반환되며 오디오 DUBS 만 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 ) ;
}
} DUB의 전사 스크립트를 원하는 형식으로 반환합니다.
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 ) ;
} 더빙 프로젝트를 삭제합니다.
var api = new ElevenLabsClient ( ) ;
await api . DubbingEndpoint . DeleteDubbingProjectAsync ( "dubbing-id" ) ;텍스트를 사운드로 변환하고 가장 고급 AI 오디오 모델을 사용하는 API.
var api = new ElevenLabsClient ( ) ;
var request = new SoundGenerationRequest ( "Star Wars Light Saber parry" ) ;
var clip = await api . SoundGenerationEndpoint . GenerateSoundAsync ( request ) ;메타 데이터를 포함한 이전에 합성 된 오디오 클립에 대한 액세스.
생성 된 모든 오디오에 대한 메타 데이터를 얻으십시오.
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 } " ) ;
} 특정 항목에 대한 정보를 얻습니다.
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 ( ) ) ; 마지막 100 가지 히스토리 항목 또는 지정된 항목 컬렉션을 다운로드합니다.
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 } " ) ;사용자 정보 및 구독 상태에 대한 액세스.
ElevenLabs를 사용하여 사용자 계정에 대한 정보를 얻습니다.
var api = new ElevenLabsClient ( ) ;
var userInfo = await api . UserEndpoint . GetUserInfoAsync ( ) ; ElevenLabs와의 구독에 대한 정보를 얻습니다.
var api = new ElevenLabsClient ( ) ;
var subscriptionInfo = await api . UserEndpoint . GetSubscriptionInfoAsync ( ) ;