Microsoft یکی از بزرگترین شرکتهای فناوری جهان است که در حوزههایی مانند سیستمعامل، نرمافزارهای سازمانی، رایانش ابری، ابزارهای توسعه و هوش مصنوعی فعالیت میکند. محصولات شناختهشده این شرکت شامل Windows , Microsoft 365 , GitHub و Azure هستند و بخش مهمی از زیرساخت هوش مصنوعی آن نیز از طریق Microsoft Foundry و Azure ارائه میشود. مایکروسافت علاوه بر مدلهای اختصاصی خود مانند خانواده MAI و Phi، دسترسی به مجموعه گستردهای از مدلهای هوش مصنوعی شرکتهای دیگر را نیز در پلتفرم ابری خود فراهم میکند.
در حال حاضر، لیارا، مدلهای زیر از Microsoft را در API خود پشتیبانی میکند:
برای کار با مدلهای TTS میتوانید از ماژول openai استفاده کنید. در ادامه، مثالهای استفاده از مدلهای TTS آمده است:
کپی
// npm install openai dotenv
require("dotenv").config();
const fs = require("fs");
const OpenAI = require("openai");
const client = new OpenAI({
apiKey: process.env.LIARA_API_KEY,
baseURL: process.env.BASE_URL,
});
async function main() {
const response = await client.audio.speech.create({
model: process.env.TTS_MODEL_NAME,
voice: process.env.TTS_VOICE,
input: "Hello! This audio was generated using Microsoft MAI Voice through Liara.",
response_format: "mp3",
});
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync("speech.mp3", buffer);
console.log("Audio saved to speech.mp3");
}
main().catch(console.error);
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
کپی
<?php
// composer require openai-php/client vlucas/phpdotenv guzzlehttp/guzzle
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$client = OpenAI::factory()
->withApiKey($_ENV["LIARA_API_KEY"])
->withBaseUri($_ENV["BASE_URL"])
->make();
$audio = $client->audio()->speech([
"model" => $_ENV["TTS_MODEL_NAME"],
"voice" => $_ENV["TTS_VOICE"],
"input" => "Hello! This audio was generated using Microsoft MAI Voice through Liara on PHP!!! Ohhhh Yeahhhhh!",
"response_format" => "mp3",
]);
file_put_contents(
__DIR__ . "/speech.mp3",
$audio
);
echo "Audio saved to speech.mp3";
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
کپی
# pip install openai python-dotenv
import os
from pathlib import Path
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(
api_key=os.getenv("LIARA_API_KEY"),
base_url=os.getenv("BASE_URL"),
)
speech_file = Path("speech.mp3")
with client.audio.speech.with_streaming_response.create(
model=os.getenv("TTS_MODEL_NAME"),
voice=os.getenv("TTS_VOICE"),
input="Hello! This audio was generated using Microsoft MAI Voice through Liara on Python! it's awesome, right?",
response_format="mp3",
) as response:
response.stream_to_file(speech_file)
print("Audio saved to speech.mp3")
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
کپی
// dotnet add package OpenAI && dotnet add package DotNetEnv
using System.ClientModel;
using DotNetEnv;
using OpenAI;
using OpenAI.Audio;
Env.Load();
var baseUrl = Environment.GetEnvironmentVariable("BASE_URL")
?? throw new Exception("BASE_URL is not defined.");
var apiKey = Environment.GetEnvironmentVariable("LIARA_API_KEY")
?? throw new Exception("LIARA_API_KEY is not defined.");
var modelName = Environment.GetEnvironmentVariable("TTS_MODEL_NAME")
?? throw new Exception("TTS_MODEL_NAME is not defined.");
var voiceName = Environment.GetEnvironmentVariable("TTS_VOICE")
?? throw new Exception("TTS_VOICE is not defined.");
var client = new OpenAIClient(
credential: new ApiKeyCredential(apiKey),
options: new OpenAIClientOptions
{
Endpoint = new Uri(baseUrl)
}
);
AudioClient audioClient = client.GetAudioClient(modelName);
GeneratedSpeechVoice voice = new(voiceName);
BinaryData speech = await audioClient.GenerateSpeechAsync(
"Hello! This audio was generated using Microsoft MAI Voice through Liara. On DOTNET!!! This is Crazy!!!!",
voice,
new SpeechGenerationOptions
{
ResponseFormat = GeneratedSpeechFormat.Mp3
}
);
await File.WriteAllBytesAsync(
"speech.mp3",
speech.ToArray()
);
Console.WriteLine("Audio saved to speech.mp3");
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
کپی
// go get github.com/openai/openai-go/v3 github.com/joho/godotenv
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/joho/godotenv"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
err := godotenv.Load()
if err != nil {
panic("Error loading .env file")
}
baseURL := os.Getenv("BASE_URL")
apiKey := os.Getenv("LIARA_API_KEY")
modelName := os.Getenv("TTS_MODEL_NAME")
voiceName := os.Getenv("TTS_VOICE")
client := openai.NewClient(
option.WithAPIKey(apiKey),
option.WithBaseURL(baseURL),
)
response, err := client.Audio.Speech.New(
context.Background(),
openai.AudioSpeechNewParams{
Model: modelName,
Voice: openai.AudioSpeechNewParamsVoiceUnion{
OfString: openai.String(voiceName),
},
Input: "Hello! This audio was generated using Microsoft MAI Voice through Liara. On Go!!!! Hellll Yeahhhh",
ResponseFormat: openai.AudioSpeechNewParamsResponseFormatMP3,
},
)
if err != nil {
panic(err)
}
defer response.Body.Close()
file, err := os.Create("speech.mp3")
if err != nil {
panic(err)
}
defer file.Close()
_, err = io.Copy(file, response.Body)
if err != nil {
panic(err)
}
fmt.Println("Audio saved to speech.mp3")
}
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
در قطعه کدهای فوق، بهجای BASE_URL، آدرس سرویس هوش مصنوعی خود را قرار دهید و بهجای LIARA_API_KEY، کلید API خود را وارد کنید. همچنین، بهجای TTS_MODEL_NAME، نام یکی از مدلهای TTS و بهجای TTS_VOICE، نام Voice موردنظر را قرار دهید.
مقادیر قابل استفاده به عنوان متغیر TTS_VOICE
TTS_VOICE یک پارامتر در مدلهای TTS است که مشخص میکند مدل هوش مصنوعی با چه صدای از پیش تعریفشدهای متن را به گفتار تبدیل کند. هر Voice یک پروفایل صوتی مستقل است که ویژگیهایی مثل جنسیت صدا، لحن (Tone)، سرعت، حس بیان (Emotion)، لهجه و سبک صحبت کردن را تعیین میکند.
در حال حاضر، میتوانید مقدار متغیر TTS_VOICE را برای مدلهای مذکور، با مقادیر زیر پر کنید (بعد از # یکسری توضیحات راجع به هر Voice قرار گرفته است).
کپی
TTS_VOICE=en-US-JennyNeural # Female - Natural, friendly, conversational
TTS_VOICE=en-US-GuyNeural # Male - Deep, professional, narration style
TTS_VOICE=en-US-AriaNeural # Female - Expressive, natural, assistant style
TTS_VOICE=en-US-DavisNeural # Male - Warm, calm, conversational
TTS_VOICE=en-GB-SoniaNeural # Female - British accent, clear, natural
TTS_VOICE=en-GB-RyanNeural # Male - British accent, professional
TTS_VOICE=fa-IR-DilaraNeural # Female - Persian, natural voice
اتصال به مدل های تبدیل گفتار به متن (STT)
برای کار با مدلهای TTS میتوانید از ماژول openai استفاده کنید. در ادامه، مثالهای استفاده از مدلهای TTS آمده است:
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
کپی
<?php
// composer require openai-php/client vlucas/phpdotenv guzzlehttp/guzzle
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$client = OpenAI::factory()
->withApiKey($_ENV["LIARA_API_KEY"])
->withBaseUri($_ENV["BASE_URL"])
->make();
$audioPath = __DIR__ . "/" . $_ENV["AUDIO_FILE"];
if (!file_exists($audioPath)) {
throw new Exception("Audio file not found: " . $audioPath);
}
$audioFile = fopen($audioPath, "r");
if ($audioFile === false) {
throw new Exception("Unable to open audio file.");
}
$response = $client->audio()->transcribe([
"model" => $_ENV["STT_MODEL_NAME"],
"file" => $audioFile,
]);
echo $response->text;
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
کپی
# pip install openai python-dotenv
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(
api_key=os.getenv("LIARA_API_KEY"),
base_url=os.getenv("BASE_URL"),
)
with open(os.getenv("AUDIO_FILE"), "rb") as audio_file:
transcription = client.audio.transcriptions.create(
model=os.getenv("STT_MODEL_NAME"),
file=audio_file,
)
print(transcription.text)
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
کپی
// dotnet add package DotNetEnv
using System.Net.Http.Headers;
using System.Text.Json;
using DotNetEnv;
Env.Load();
var baseUrl = Environment.GetEnvironmentVariable("BASE_URL")
?? throw new Exception("BASE_URL is not defined.");
var apiKey = Environment.GetEnvironmentVariable("LIARA_API_KEY")
?? throw new Exception("LIARA_API_KEY is not defined.");
var modelName = Environment.GetEnvironmentVariable("STT_MODEL_NAME")
?? throw new Exception("STT_MODEL_NAME is not defined.");
var audioFile = Environment.GetEnvironmentVariable("AUDIO_FILE")
?? throw new Exception("AUDIO_FILE is not defined.");
var audioPath = Path.GetFullPath(audioFile);
if (!File.Exists(audioPath))
{
throw new FileNotFoundException(
$"Audio file not found: {audioPath}"
);
}
var extension = Path.GetExtension(audioPath).ToLowerInvariant();
var fileName = Path.GetFileName(audioPath);
var mimeType = extension switch
{
".mp3" => "audio/mpeg",
".wav" => "audio/wav",
".flac" => "audio/flac",
".m4a" => "audio/mp4",
".ogg" => "audio/ogg",
".webm" => "audio/webm",
".aac" => "audio/aac",
_ => throw new Exception(
$"Unsupported audio format: {extension}"
)
};
Console.WriteLine($"File: {fileName}");
Console.WriteLine($"Format: {extension}");
Console.WriteLine($"MIME type: {mimeType}");
Console.WriteLine($"Size: {new FileInfo(audioPath).Length} bytes");
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue(
"Bearer",
apiKey
);
using var form = new MultipartFormDataContent();
form.Add(
new StringContent(modelName),
"model"
);
await using var audioStream = File.OpenRead(audioPath);
using var fileContent = new StreamContent(audioStream);
fileContent.Headers.ContentType =
new MediaTypeHeaderValue(mimeType);
form.Add(
fileContent,
"file",
fileName
);
var url =
$"{baseUrl.TrimEnd('/')}/audio/transcriptions";
var response = await client.PostAsync(
url,
form
);
var result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
Console.WriteLine($"HTTP {(int)response.StatusCode}");
Console.WriteLine(result);
return;
}
using var json = JsonDocument.Parse(result);
if (json.RootElement.TryGetProperty(
"text",
out var text
))
{
Console.WriteLine(text.GetString());
}
else
{
Console.WriteLine(result);
}
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
پروژه کامل قطعه کد فوق در گیتهاب لیارا قابل مشاهده و استفاده است.
در قطعه کدهای فوق، بهجای BASE_URL، آدرس سرویس هوش مصنوعی خود را قرار دهید و بهجای LIARA_API_KEY، کلید API خود را وارد کنید. همچنین، بهجای STT_MODEL_NAME، نام مدل STT و بهجای AUDIO_FILE، نام یا مسیر فایل صوتی موردنظر برای تبدیل گفتار به متن را قرار دهید.