عميل بسيط من النص إلى كلام لـ Azure TTS API. ؟
بدءًا من الإصدار 6.0.0 ، يستخدم aspeak افتراضيًا واجهة برمجة التطبيقات المريحة لـ Azure TTS. إذا كنت ترغب في استخدام واجهة برمجة تطبيقات WebSocket ، فيمكنك تحديد --mode websocket عند استدعاء aspeak أو Set mode = "websocket" في قسم auth من ملفك الشخصي.
بدءًا من الإصدار 4.0.0 ، تتم إعادة كتابة aspeak في الصدأ. يتوفر إصدار Python القديم في فرع python .
يمكنك الاشتراك في حساب Azure ثم اختيار خطة دفع حسب الحاجة (أو التمسك بالفئة المجانية). تتضمن الطبقة المجانية حصة تبلغ 0.5 مليون حرف شهريًا ، مجانًا.
يرجى الرجوع إلى قسم المصادقة لمعرفة كيفية إعداد المصادقة لـ Aspeak.
قم بتنزيل أحدث إصدار من هنا.
بعد التنزيل ، استخراج الأرشيف وستحصل على ملف قابل للتنفيذ ثنائي.
يمكنك وضعه في دليل في متغير بيئة PATH حتى تتمكن من تشغيله من أي مكان.
من v4.1.0 ، يمكنك تثبيت aspeak-bin من Aur.
سيقوم التثبيت من PYPI أيضًا بتثبيت الربط Python من aspeak لك. تحقق من استخدام المكتبة#Python لمزيد من المعلومات حول استخدام الربط Python.
pip install -U aspeak==6.0.0الآن تتوفر عجلات Prebuilt فقط للهندسة المعمارية x86_64. نظرًا لبعض المشكلات الفنية ، لم أقم بتحميل توزيع المصدر إلى PYPI حتى الآن. لذلك لبناء عجلة من المصدر ، تحتاج إلى اتباع التعليمات في التثبيت من المصدر.
نظرًا لقضايا توافق ManyLinux ، فإن عجلات Linux غير متوفرة على PYPI. (ولكن لا يزال بإمكانك بناءها من المصدر.)
أسهل طريقة لتثبيت aspeak من المصدر هي استخدام البضائع:
cargo install aspeak -F binary بدلاً من ذلك ، يمكنك أيضًا تثبيت aspeak من Aur.
لبناء عجلة Python ، تحتاج إلى تثبيت maturin أولاً:
pip install maturin بعد استنساخ المستودع والقرص cd في الدليل ، يمكنك بناء العجلة عن طريق التشغيل:
maturin build --release --strip -F python --bindings pyo3 --interpreter python --manifest-path Cargo.toml --out dist-pyo3
maturin build --release --strip --bindings bin -F binary --interpreter python --manifest-path Cargo.toml --out dist-bin
bash merge-wheel.bash إذا سارت الأمور على ما يرام ، فستحصل على ملف عجلة في dist Directory.
قم بتشغيل aspeak help لرؤية رسالة المساعدة.
قم بتشغيل aspeak help <subcommand> لمشاهدة رسالة المساعدة للورم الفرعي.
يجب وضع خيارات المصادقة قبل أي مجموعة فرعية.
على سبيل المثال ، للاستفادة من مفتاح الاشتراك الخاص بك ونقطة نهاية رسمية مخصصة لها المنطقة ، قم بتشغيل الأمر التالي:
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " إذا كنت تستخدم نقطة نهاية مخصصة ، فيمكنك استخدام خيار --endpoint بدلاً من --region .
لتجنب التكرار ، يمكنك تخزين تفاصيل المصادقة الخاصة بك في ملفك الشخصي Aspeak. اقرأ القسم التالي لمزيد من التفاصيل.
من v5.2.0 ، يمكنك أيضًا تعيين أسرار المصادقة عبر متغيرات البيئة التالية:
ASPEAK_AUTH_KEY للمصادقة باستخدام مفتاح الاشتراكASPEAK_AUTH_TOKEN للمصادقة باستخدام رمز التفويضمن v4.3.0 ، يمكنك السماح لـ Aspeak باستخدام خادم وكيل للاتصال بنقطة النهاية. في الوقت الحالي ، يتم دعم وكلاء HTTP و Socks5 فقط (لا يوجد دعم HTTPS حتى الآن). على سبيل المثال:
$ aspeak --proxy http://your_proxy_server:port text " Hello World "
$ aspeak --proxy socks5://your_proxy_server:port text " Hello World " يحترم ASPEAK أيضًا متغير البيئة HTTP_PROXY (أو http_proxy ).
Aspeak V4 يقدم مفهوم الملفات الشخصية. ملف التعريف هو ملف تكوين حيث يمكنك تحديد القيم الافتراضية لخيارات سطر الأوامر.
قم بتشغيل الأمر التالي لإنشاء ملفك الشخصي الافتراضي:
$ aspeak config initلتحرير الملف الشخصي ، قم بتشغيل:
$ aspeak config editإذا كانت لديك مشكلة في تشغيل الأمر أعلاه ، فيمكنك تحرير ملف التعريف يدويًا:
قبضة الحصول على مسار الملف الشخصي عن طريق التشغيل:
$ aspeak config whereثم قم بتحرير الملف باستخدام محرر النص المفضل لديك.
الملف الشخصي هو ملف توم. يبدو الملف الشخصي الافتراضي مثل هذا:
تحقق من التعليقات في ملف التكوين لمزيد من المعلومات حول الخيارات المتاحة.
# Profile for aspeak
# GitHub: https://github.com/kxxt/aspeak
# Output verbosity
# 0 - Default
# 1 - Verbose
# The following output verbosity levels are only supported on debug build
# 2 - Debug
# >=3 - Trace
verbosity = 0
#
# Authentication configuration
#
[ auth ]
# Endpoint for TTS
# endpoint = "wss://eastus.tts.speech.microsoft.com/cognitiveservices/websocket/v1"
# Alternatively, you can specify the region if you are using official endpoints
# region = "eastus"
# Synthesizer Mode, "rest" or "websocket"
# mode = "rest"
# Azure Subscription Key
# key = "YOUR_KEY"
# Authentication Token
# token = "Your Authentication Token"
# Extra http headers (for experts)
# headers = [["X-My-Header", "My-Value"], ["X-My-Header2", "My-Value2"]]
# Proxy
# proxy = "socks5://127.0.0.1:7890"
# Voice list API url
# voice_list_api = "Custom voice list API url"
#
# Configuration for text subcommand
#
[ text ]
# Voice to use. Note that it takes precedence over the locale
# voice = "en-US-JennyNeural"
# Locale to use
locale = " en-US "
# Rate
# rate = 0
# Pitch
# pitch = 0
# Role
# role = "Boy"
# Style, "general" by default
# style = "general"
# Style degree, a floating-point number between 0.1 and 2.0
# style_degree = 1.0
#
# Output Configuration
#
[ output ]
# Container Format, Only wav/mp3/ogg/webm is supported.
container = " wav "
# Audio Quality. Run `aspeak list-qualities` to see available qualities.
#
# If you choose a container format that does not support the quality level you specified here,
# we will automatically select the closest level for you.
quality = 0
# Audio Format(for experts). Run `aspeak list-formats` to see available formats.
# Note that it takes precedence over container and quality!
# format = "audio-16khz-128kbitrate-mono-mp3" إذا كنت ترغب في استخدام ملف تعريف بخلاف ملفك الشخصي الافتراضي ، فيمكنك استخدام الوسيطة --profile :
aspeak --profile < PATH_TO_A_PROFILE > text " Hello " إذا كنت ترغب في تعطيل الملف الشخصي مؤقتًا ، فيمكنك استخدام الوسيطة --no-profile :
aspeak --no-profile --region eastus --key < YOUR_KEY > text " Hello "rate : معدل التحدث للصوت.0.5 ) ، سيتم ضرب القيمة بنسبة 100 ٪ وتصبح 50.00% .x-slow ، slow ، medium ، fast ، x-fast ، default .+10% .f postfix) ، 1.2f :1f إلى تغيير في المعدل. قيمة 0.5f تؤدي إلى النصف من المعدل. تؤدي قيمة 3f إلى ثلاثة أضعاف من المعدل.pitch : درجة الصوت.-0.5 ) ، فسيتم ضرب القيمة بنسبة 100 ٪ وتصبح -50.00% .x-low ، low ، medium ، high ، عالية x-high ، default .+10% .-2st أو +80Hz ):600Hzملاحظة : سيتم قطع القيم المرتفعة/المنخفضة غير المعقولة إلى قيم معقولة بواسطة Azure Cromitive Services.
تفترض الأمثلة التالية أنك قمت بالفعل بإعداد المصادقة في ملف التعريف الخاص بك.
$ aspeak text " Hello, world " $ aspeak ssml << EOF
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='en-US-JennyNeural'>Hello, world!</voice></speak>
EOF $ aspeak list-voices$ aspeak list-voices -l zh-CN$ aspeak list-voices -v en-US-SaraNeural Microsoft Server Speech Text to Speech Voice (en-US, SaraNeural)
Display name: Sara
Local name: Sara @ en-US
Locale: English (United States)
Gender: Female
ID: en-US-SaraNeural
Voice type: Neural
Status: GA
Sample rate: 48000Hz
Words per minute: 157
Styles: ["angry", "cheerful", "excited", "friendly", "hopeful", "sad", "shouting", "terrified", "unfriendly", "whispering"]
$ aspeak text " Hello, world " -o output.wav إذا كنت تفضل mp3 / ogg / webm ، فيمكنك استخدام خيار -c mp3 / -c ogg / -c webm .
$ aspeak text " Hello, world " -o output.mp3 -c mp3
$ aspeak text " Hello, world " -o output.ogg -c ogg
$ aspeak text " Hello, world " -o output.webm -c webm$ aspeak list-qualities Qualities for MP3:
3: audio-48khz-192kbitrate-mono-mp3
2: audio-48khz-96kbitrate-mono-mp3
-3: audio-16khz-64kbitrate-mono-mp3
1: audio-24khz-160kbitrate-mono-mp3
-2: audio-16khz-128kbitrate-mono-mp3
-4: audio-16khz-32kbitrate-mono-mp3
-1: audio-24khz-48kbitrate-mono-mp3
0: audio-24khz-96kbitrate-mono-mp3
Qualities for WAV:
-2: riff-8khz-16bit-mono-pcm
1: riff-24khz-16bit-mono-pcm
0: riff-24khz-16bit-mono-pcm
-1: riff-16khz-16bit-mono-pcm
Qualities for OGG:
0: ogg-24khz-16bit-mono-opus
-1: ogg-16khz-16bit-mono-opus
1: ogg-48khz-16bit-mono-opus
Qualities for WEBM:
0: webm-24khz-16bit-mono-opus
-1: webm-16khz-16bit-mono-opus
1: webm-24khz-16bit-24kbps-mono-opus
$ aspeak list-formats amr-wb-16000hz
audio-16khz-128kbitrate-mono-mp3
audio-16khz-16bit-32kbps-mono-opus
audio-16khz-32kbitrate-mono-mp3
audio-16khz-64kbitrate-mono-mp3
audio-24khz-160kbitrate-mono-mp3
audio-24khz-16bit-24kbps-mono-opus
audio-24khz-16bit-48kbps-mono-opus
audio-24khz-48kbitrate-mono-mp3
audio-24khz-96kbitrate-mono-mp3
audio-48khz-192kbitrate-mono-mp3
audio-48khz-96kbitrate-mono-mp3
ogg-16khz-16bit-mono-opus
ogg-24khz-16bit-mono-opus
ogg-48khz-16bit-mono-opus
raw-16khz-16bit-mono-pcm
raw-16khz-16bit-mono-truesilk
raw-22050hz-16bit-mono-pcm
raw-24khz-16bit-mono-pcm
raw-24khz-16bit-mono-truesilk
raw-44100hz-16bit-mono-pcm
raw-48khz-16bit-mono-pcm
raw-8khz-16bit-mono-pcm
raw-8khz-8bit-mono-alaw
raw-8khz-8bit-mono-mulaw
riff-16khz-16bit-mono-pcm
riff-22050hz-16bit-mono-pcm
riff-24khz-16bit-mono-pcm
riff-44100hz-16bit-mono-pcm
riff-48khz-16bit-mono-pcm
riff-8khz-16bit-mono-pcm
riff-8khz-8bit-mono-alaw
riff-8khz-8bit-mono-mulaw
webm-16khz-16bit-mono-opus
webm-24khz-16bit-24kbps-mono-opus
webm-24khz-16bit-mono-opus
# Less than default quality.
$ aspeak text " Hello, world " -o output.mp3 -c mp3 -q=-1
# Best quality for mp3
$ aspeak text " Hello, world " -o output.mp3 -c mp3 -q=3$ cat input.txt | aspeak textأو
$ aspeak text -f input.txtمع الترميز المخصص:
$ aspeak text -f input.txt -e gbk$ aspeak textربما تفضل:
$ aspeak text -l zh-CN << EOF
我能吞下玻璃而不伤身体。
EOF $ aspeak text "你好,世界! " -l zh-CN$ aspeak text "你好,世界! " -v zh-CN-YunjianNeural$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p 1.5 -r 0.5 -S sad
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=-10% -r=+5% -S cheerful
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=+40Hz -r=1.2f -S fearful
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=high -r=x-slow -S calm
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=+1st -r=-7% -S lyricalملاحظة : لا يتم دعم بعض تنسيقات الصوت عند الإخراج إلى السماعة.
$ aspeak text " Hello World " -F riff-48khz-16bit-mono-pcm -o high-quality.wav تتم كتابة الإصدار الجديد من aspeak في Rust ، ويتم توفير الربط Python بواسطة Pyo3.
هنا مثال بسيط:
from aspeak import SpeechService
service = SpeechService ( region = "eastus" , key = "YOUR_AZURE_SUBSCRIPTION_KEY" )
service . speak_text ( "Hello, world" ) تحتاج أولاً إلى إنشاء مثيل SpeechService .
عند إنشاء مثيل SpeechService ، يمكنك تحديد المعلمات التالية:
audio_format (الوسيطة الموضعية): تنسيق الصوت لصوت الإخراج. الافتراضي هو AudioFormat.Riff24KHz16BitMonoPcm .AudioFormat("mp3", 2) .endpoint : نقطة نهاية خدمة الكلام.region : بدلاً من ذلك ، يمكنك تحديد منطقة خدمة الكلام بدلاً من كتابة عنوان URL الممل في نقطة النهاية.key : مفتاح الاشتراك في خدمة الكلام.token : الرمز المميز لخدمة الكلام. إذا قدمت رمزًا ، فسيتم تجاهل مفتاح الاشتراك.headers : رؤوس HTTP إضافية لخدمة الكلام.mode : اختر الملتوي للاستخدام. إما rest أو websocket .SpeechService . بعد ذلك ، يمكنك الاتصال بـ speak_text() للتحدث بالنص أو speak_ssml() للتحدث بـ SSML. أو يمكنك استدعاء synthesize_text() أو synthesize_ssml() للحصول على بيانات الصوت.
من أجل synthesize_text() و synthesize_ssml() ، إذا قمت بتقديم output ، فسيتم كتابة بيانات الصوت إلى هذا الملف وستؤدي الوظيفة إلى إرجاع None . خلاف ذلك ، ستعود الوظيفة إلى بيانات الصوت.
فيما يلي الخيارات الشائعة لـ speak_text() و synthesize_text() :
locale : لغة الصوت. الافتراضي هو en-US .voice : اسم الصوت. الافتراضي هو en-US-JennyNeural .rate : معدل التحدث للصوت. يجب أن تكون سلسلة تناسب المتطلبات كما هو موثق في هذا القسم: الملعب والمعدلpitch : درجة الصوت. يجب أن تكون سلسلة تناسب المتطلبات كما هو موثق في هذا القسم: الملعب والمعدلstyle : نمط الصوت.aspeak -L -v <VOICE_ID>general .style_degree : درجة النمط.role : دور الصوت.role لعب الأدوار الكلام. يعمل الصوت كعمر مختلف ونوع الجنس ، لكن الاسم الصوتي لم يتغير.zh-CN-XiaomoNeural ، zh-CN-XiaoxuanNeural ، zh-CN-YunxiNeural ، و zh-CN-YunyeNeural . أضف aspeak إلى Cargo.toml :
$ cargo add aspeak ثم اتبع وثائق aspeak Crate.
هناك 4 أمثلة للرجوع السريع: