أحد عشر مختبرًا لا يتوافق مع العميل الصوتي.
أنا لست مرتبطًا بـ Elevenlabs وحساب مع وصول API مطلوب.
جميع حقوق الطبع والنشر والعلامات التجارية والشعارات والأصول هي ملك لأصحابها المعنيين.
قم بتثبيت الحزمة ElevenLabs-DotNet من Nuget. إليك كيف عبر سطر الأوامر:
Install-Package ElevenLabs - DotNet dotnet add package ElevenLabs-DotNet
هل تتطلع إلى استخدام Elevenlabs في محرك Game Unity؟ تحقق من حزمة الوحدة الخاصة بنا على openupm:
هناك 3 طرق لتوفير مفاتيح واجهة برمجة التطبيقات الخاصة بك ، حسب الأسبقية:
var api = new ElevenLabsClient ( "yourApiKey" ) ; أو إنشاء كائن ElevenLabsAuthentication يدويًا
var api = new ElevenLabsClient ( new ElevenLabsAuthentication ( "yourApiKey" ) ) ; محاولات تحميل مفاتيح API من ملف التكوين ، افتراضيًا .elevenlabs في الدليل الحالي ، يجتاز اختياريًا شجرة الدليل أو في الدليل الرئيسي للمستخدم.
لإنشاء ملف تكوين ، قم بإنشاء ملف نصي جديد يسمى .elevenlabs ويحتوي على السطر:
{
"apiKey" : " yourApiKey " ,
}يمكنك أيضًا تحميل الملف مباشرة باستخدام المسار المعروف عن طريق استدعاء طريقة ثابتة في المصادقة:
var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromDirectory ( "your/path/to/.elevenlabs" ) ) ; ; استخدم متغيرات بيئة نظامك ، حدد مفتاح API للاستخدام.
ELEVEN_LABS_API_KEY لمفتاح API الخاص بك. var api = new ElevenLabsClient ( ElevenLabsAuthentication . LoadFromEnv ( ) ) ;إن استخدام حزم ElevenLabs-Dotnet أو Com.rest.ElevenLabs مباشرة في تطبيقك الأمامي قد يعرض مفاتيح واجهة برمجة التطبيقات والمعلومات الحساسة الأخرى. للتخفيف من هذا المخاطر ، يوصى بإعداد واجهة برمجة تطبيقات وسيطة تقدم طلبات إلى Elevenlabs نيابة عن تطبيقك الأمامي. يمكن استخدام هذه المكتبة لكل من تكوينات المضيف الأمامي والوسيط ، مما يضمن التواصل الآمن مع API ElevenLabs.
في المثال الأمامي ، ستحتاج إلى مصادقة المستخدمين بشكل آمن باستخدام مزود OAuth المفضل لديك. بمجرد مصادقة المستخدم ، قم بتبادل رمز Auth Auth الخاص بك مع مفتاح API الخاص بك على الواجهة الخلفية.
اتبع هذه الخطوات:
ElevenLabsAuthentication ومرر في الرمز المميز المخصص.ElevenLabsClientSettings وحدد المجال حيث يوجد واجهة برمجة تطبيقات الوسيطة الخاصة بك.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-Dotnet-proxy ، والتي تقوم بعد ذلك بإعادة توجيه طلبات إلى API ElevenLabs. هذا يضمن أن تظل مفاتيح API ElevenLabs الخاصة بك والمعلومات الحساسة الأخرى آمنة طوال العملية.
في هذا المثال ، نوضح كيفية إعداد واستخدام ElevenLabsProxyStartup في تطبيق ويب ASP.NET Core جديد. سيتعامل خادم الوكيل مع المصادقة وإعادة توجيه الطلبات إلى واجهة برمجة تطبيقات ElevenLabs ، مما يضمن بقاء مفاتيح 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 كما تفعل عادة مع مفاتيح API أو معرف org أو Azure. 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 مباشرة. سيتعامل خادم الوكيل مع المصادقة وإعادة توجيه الطلبات إلى واجهة برمجة تطبيقات ElevenLabs ، مما يضمن بقاء مفاتيح 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 ) ;
} ) ;الوصول إلى الأصوات التي تم إنشاؤها إما بواسطة المستخدم أو Elevenlabs.
يحصل على قائمة بالأصوات المشتركة في مكتبة الصوت العامة.
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 } " ) ;قدمت Dubs ملف الصوت أو الفيديو في لغة معينة.
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 ;
}
} ) ) ; إرجاع البيانات الوصفية حول مشروع Dubbing ، بما في ذلك ما إذا كان لا يزال قيد التقدم أم لا.
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 ) ;
} يحذف مشروع Dubbing.
var api = new ElevenLabsClient ( ) ;
await api . DubbingEndpoint . DeleteDubbingProjectAsync ( "dubbing-id" ) ;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 ( ) ;