واحد غير رسمي Elevenlabs Synthesis Synthesis Rectful Client for the Unity Game Engine.
بناء على Elevenlabs-dotnet
أنا لست مرتبطًا بـ Elevenlabs وحساب مع وصول API مطلوب.
جميع حقوق الطبع والنشر والعلامات التجارية والشعارات والأصول هي ملك لأصحابها المعنيين.
يتطلب الوحدة 2021.3 LTS أو أعلى.
طريقة التثبيت الموصى بها هي على الرغم من أن Manager Unity Package Manager و OpenUPM.
Package Manager 
OpenUPMhttps://package.openupm.comcom.rest.elevenlabscom.utilitiesMy RegistriesElevenLabshttps://github.com/RageAgainstThePixel/com.rest.elevenlabs.git#upmملاحظة: هذا الريبو لديه تبعيات على مستودعات أخرى! أنت مسؤول عن إضافة هذه بنفسك.
هناك 4 طرق لتوفير مفاتيح واجهة برمجة التطبيقات الخاصة بك ، حسب الأسبقية:
var api = new ElevenLabsClient ( "yourApiKey" ) ; أو إنشاء كائن ElevenLabsAuthentication يدويًا
var api = new ElevenLabsClient ( new ElevenLabsAuthentication ( "yourApiKey" ) ) ; يمكنك حفظ المفتاح مباشرة في كائن قابل للنص الموجود في مجلد Assets/Resources .
يمكنك إنشاء قائمة جديدة باستخدام قائمة السياق لجزء المشروع وإنشاء كائن قابل للرسمية ElevenLabsConfiguration جديد.

محاولات تحميل مفاتيح API من ملف التكوين ، افتراضيًا .elevenlabs في الدليل الحالي ، يجتاز اختياريًا شجرة الدليل أو في الدليل الرئيسي للمستخدم.
لإنشاء ملف تكوين ، قم بإنشاء ملف نصي جديد يسمى .elevenlabs ويحتوي على السطر:
{
"apiKey" : " yourApiKey " ,
}يمكنك أيضًا تحميل الملف مباشرة باستخدام المسار المعروف عن طريق استدعاء طريقة ثابتة في المصادقة:
var api = new ElevenLabsClient ( new ElevenLabsAuthentication ( ) . LoadFromDirectory ( "your/path/to/.elevenlabs" ) ) ; ; استخدم متغيرات بيئة نظامك ، حدد مفتاح API للاستخدام.
ELEVEN_LABS_API_KEY لمفتاح API الخاص بك. var api = new ElevenLabsClient ( new ElevenLabsAuthentication ( ) . LoadFromEnvironment ( ) ) ;إن استخدام حزم ElevenLabs-Dotnet أو Com.rest.ElevenLabs مباشرة في تطبيقك الأمامي قد يعرض مفاتيح واجهة برمجة التطبيقات والمعلومات الحساسة الأخرى. للتخفيف من هذا المخاطر ، يوصى بإعداد واجهة برمجة تطبيقات وسيطة تقدم طلبات إلى Elevenlabs نيابة عن تطبيقك الأمامي. يمكن استخدام هذه المكتبة لكل من تكوينات المضيف الأمامي والوسيط ، مما يضمن التواصل الآمن مع API ElevenLabs.
في المثال الأمامي ، ستحتاج إلى مصادقة المستخدمين بشكل آمن باستخدام مزود OAuth المفضل لديك. بمجرد مصادقة المستخدم ، قم بتبادل رمز Auth Auth الخاص بك مع مفتاح API الخاص بك على الواجهة الخلفية.
اتبع هذه الخطوات:
ElevenLabsAuthentication ومرر في الرمز المميز المخصص.ElevenLabsSettings وحدد المجال حيث يوجد واجهة برمجة التطبيقات المتوسطة.auth الجديدة settings الخاصة بك إلى مُنشئ ElevenLabsClient عند إنشاء مثيل العميل.إليك مثال على كيفية إعداد الواجهة الأمامية:
var authToken = await LoginAsync ( ) ;
var auth = new ElevenLabsAuthentication ( authToken ) ;
var settings = new ElevenLabsSettings ( 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 وتجاوز طريقة ValidateAuthenticationAsync . سيؤدي ذلك إلى تنفيذ IAuthenticationFilter الذي ستستخدمه للتحقق من رمز جلسة المستخدم مقابل الخادم الداخلي الخاص بك.Program.cs ، قم بإنشاء تطبيق ويب جديد عن طريق الاتصال بـ ElevenLabsProxyStartup.CreateDefaultHost ، ويمرر 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 client = new ElevenLabsClient ( ) ;
var proxy = ElevenLabsProxyStartup . CreateDefaultHost < AuthenticationFilter > ( args , client ) ;
proxy . Run ( ) ;
}
}بمجرد إعداد خادم الوكيل الخاص بك ، يمكن للمستخدمين النهائيين الآن تقديم طلبات مصادقة على واجهة برمجة تطبيقات الوكيل بدلاً من واجهة برمجة تطبيقات ElevenLabs مباشرة. سيتعامل خادم الوكيل مع المصادقة وإعادة توجيه الطلبات إلى واجهة برمجة تطبيقات ElevenLabs ، مما يضمن بقاء مفاتيح API والمعلومات الحساسة الأخرى آمنة.
يمكنك تنفيذ جميع الإجراءات نفسها من موقع ElevenLabs ، في المحرر باستخدام لوحة معلومات ElevenLabs!
Window/Dashboards/ElevenLabs

كما هو الحال في موقع ElevenLabs ، يمكنك توليف مقاطع صوتية جديدة باستخدام الأصوات المتاحة. تجعل هذه الأداة أكثر سهولة حيث يتم تنزيل المقاطع تلقائيًا واستيرادها في مشروعك ، وعلى استعداد لاستخدامها!

كما هو الحال في موقع ElevenLabs ، يمكنك إدارة جميع أصواتك مباشرة في المحرر.

سيؤدي تحديد Create New Voice إلى عرض نافذة منبثقة حيث يمكنك تصميم أصوات جديدة تمامًا باستخدام ElevenLabs Guysing.

بالإضافة إلى ذلك ، يمكنك أيضًا استنساخ صوت من تسجيلات العينات.

يمكنك أيضًا الوصول إلى القائمة الكاملة لجميع العينات التي تم إنشاؤها ، جاهزة للتنزيل.

تحويل النص إلى الكلام.
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 ) ;
audioSource . PlayOneShot ( voiceClip . AudioClip ) ;ملاحظة: إذا كنت ترغب في حفظ مقطع الصوت في مشروعك ، فستحتاج إلى نسخه من المسار المخزونات في الموقع المحدد في مشروعك:
voiceClip . CopyIntoProject ( editorDownloadDirectory ) ; دفق النص إلى الكلام.
var api = new ElevenLabsClient ( ) ;
var text = "The quick brown fox jumps over the lazy dog." ;
var voice = ( await api . VoicesEndpoint . GetAllVoicesAsync ( ) ) . FirstOrDefault ( ) ;
var partialClips = new Queue < VoiceClip > ( ) ;
var request = new TextToSpeechRequest ( voice , message , model : Model . EnglishTurboV2 , outputFormat : OutputFormat . PCM_44100 ) ;
var voiceClip = await api . TextToSpeechEndpoint . StreamTextToSpeechAsync ( request , partialClip =>
{
// Note: check demo scene for best practices
// on how to handle playback with OnAudioFilterRead
partialClips . Enqueue ( partialClip ) ;
} ) ;الوصول إلى الأصوات التي تم إنشاؤها إما بواسطة المستخدم أو Elevenlabs.
يحصل على قائمة بالأصوات المشتركة في مكتبة الصوت العامة.
var api = new ElevenLabsClient ( ) ;
var results = await ElevenLabsClient . SharedVoicesEndpoint . GetSharedVoicesAsync ( ) ;
foreach ( var voice in results . Voices )
{
Debug . Log ( $ " { voice . OwnerId } | { voice . VoiceId } | { voice . Date } | { voice . Name } " ) ;
} يحصل على قائمة بجميع الأصوات المتاحة.
var api = new ElevenLabsClient ( ) ;
var allVoices = await api . VoicesEndpoint . GetAllVoicesAsync ( ) ;
foreach ( var voice in allVoices )
{
Debug . Log ( $ " { voice . Id } | { voice . Name } | similarity boost: { voice . Settings ? . SimilarityBoost } | stability: { voice . Settings ? . Stability } " ) ;
} يحصل على إعدادات الصوت الافتراضية العالمية.
var api = new ElevenLabsClient ( ) ;
var result = await api . VoicesEndpoint . GetDefaultVoiceSettingsAsync ( ) ;
Debug . Log ( $ "stability: { result . Stability } | similarity boost: { result . SimilarityBoost } " ) ; var api = new ElevenLabsClient ( ) ;
var voice = await api . VoicesEndpoint . GetVoiceAsync ( "voiceId" ) ;
Debug . Log ( $ " { voice . Id } | { voice . Name } | { voice . PreviewUrl } " ) ; قم بتحرير الإعدادات لصوت معين.
var api = new ElevenLabsClient ( ) ;
var success = await api . VoicesEndpoint . EditVoiceSettingsAsync ( voice , new VoiceSettings ( 0.7f , 0.7f ) ) ;
Debug . Log ( $ "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 ) ;
Debug . Log ( $ "Was successful? { success } " ) ; var api = new ElevenLabsClient ( ) ;
var success = await api . VoicesEndpoint . DeleteVoiceAsync ( voiceId ) ;
Debug . Log ( $ "Was successful? { success } " ) ; الوصول إلى العينات الخاصة بك ، التي أنشأتها عند استنساخ الأصوات.
var api = new ElevenLabsClient ( ) ;
var voiceClip = await api . VoicesEndpoint . DownloadVoiceSampleAsync ( voice , sample ) ; var api = new ElevenLabsClient ( ) ;
var success = await api . VoicesEndpoint . DeleteVoiceSampleAsync ( voiceId , sampleId ) ;
Debug . Log ( $ "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" :
Debug . Log ( $ "Dubbing for { metadata . DubbingId } in progress... Expected Duration: { metadata . ExpectedDurationSeconds : 0.00 } seconds" ) ;
break ;
case "dubbed" :
Debug . Log ( $ "Dubbing for { metadata . DubbingId } complete in { metadata . TimeCompleted . TotalSeconds : 0.00 } seconds!" ) ;
break ;
default :
Debug . Log ( $ "Status: { metadata . Status } " ) ;
break ;
}
} ) ) ; إرجاع البيانات الوصفية حول مشروع Dubbing ، بما في ذلك ما إذا كان لا يزال قيد التقدم أم لا.
var api = new ElevenLabsClient ( ) ;
var metadata = api . await GetDubbingProjectMetadataAsync ( "dubbing - id");إرجاع تنزيل مسار الملف المدبلج.
مهم
سيتم إرجاع مقاطع الفيديو بتنسيق MP4 وسيتم إرجاع Dubs الصوت فقط في MP3.
var dubbedClipPath = await ElevenLabsClient . DubbingEndpoint . GetDubbedFileAsync ( metadata . DubbingId , request . TargetLanguage ) ;
var dubbedClip = await Rest . DownloadAudioClipAsync ( $ "file:// { dubbedClipPath } " , AudioType . MPEG ) ;
audioSource . PlayOneShot ( dubbedClip ) ; إرجاع نسخة ل DUB بالتنسيق المطلوب.
var srcFile = new FileInfo ( audioPath ) ;
var transcriptPath = new FileInfo ( $ " { srcFile . FullName } .dubbed. { request . TargetLanguage } .srt" ) ;
var transcriptFile = await ElevenLabsClient . 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 ) )
{
Debug . Log ( $ " { 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 ) ; يقوم بتنزيل آخر 100 عنصر تاريخ ، أو مجموعة العناصر المحددة.
var api = new ElevenLabsClient ( ) ;
var voiceClips = await api . HistoryEndpoint . DownloadHistoryItemsAsync ( ) ;ملاحظة: لنسخ المقاطع مباشرة إلى مشروعك ، يمكنك الاتصال بالإضافة إلى ذلك:
VoiceClipUtilities . CopyIntoProject ( editorDownloadDirectory , downloadItems . ToArray ( ) ) ; var api = new ElevenLabsClient ( ) ;
var success = await api . HistoryEndpoint . DeleteHistoryItemAsync ( historyItem ) ;
Debug . Log ( $ "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 ( ) ;