মিথুন অডিও ইনপুট বিশ্লেষণ এবং বুঝতে পারে, নিম্নলিখিতগুলির মতো ব্যবহারের ক্ষেত্রে সক্ষম করে:
- বর্ণনা করুন, সংক্ষিপ্ত করুন বা অডিও বিষয়বস্তু সম্পর্কে প্রশ্নের উত্তর দিন।
- অডিও একটি প্রতিলিপি প্রদান.
- অডিওর নির্দিষ্ট অংশ বিশ্লেষণ করুন।
এই নির্দেশিকা আপনাকে দেখায় কিভাবে অডিও ইনপুটে একটি পাঠ্য প্রতিক্রিয়া তৈরি করতে Gemini API ব্যবহার করতে হয়।
আপনি শুরু করার আগে
Gemini API কল করার আগে, নিশ্চিত করুন যে আপনি আপনার পছন্দের SDK ইনস্টল করেছেন, এবং একটি Gemini API কী কনফিগার করা এবং ব্যবহারের জন্য প্রস্তুত।
ইনপুট অডিও
আপনি নিম্নলিখিত উপায়ে মিথুনকে অডিও ডেটা সরবরাহ করতে পারেন:
-
generateContent
করার অনুরোধ করার আগে একটি অডিও ফাইল আপলোড করুন । -
generateContent
অনুরোধের সাথে ইনলাইন অডিও ডেটা পাস করুন ।
একটি অডিও ফাইল আপলোড করুন
আপনি একটি অডিও ফাইল আপলোড করতে Files API ব্যবহার করতে পারেন। সর্বদা ফাইল API ব্যবহার করুন যখন মোট অনুরোধের আকার (ফাইল, টেক্সট প্রম্পট, সিস্টেম নির্দেশাবলী, ইত্যাদি সহ) 20 MB এর থেকে বড় হয়৷
নিম্নোক্ত কোডটি একটি অডিও ফাইল আপলোড করে এবং তারপরে generateContent
করতে কলে ফাইলটি ব্যবহার করে।
from google import genai
client = genai.Client(api_key="GOOGLE_API_KEY")
myfile = client.files.upload(file="path/to/sample.mp3")
response = client.models.generate_content(
model="gemini-2.0-flash", contents=["Describe this audio clip", myfile]
)
print(response.text)
import {
GoogleGenAI,
createUserContent,
createPartFromUri,
} from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
async function main() {
const myfile = await ai.files.upload({
file: "path/to/sample.mp3",
config: { mimeType: "audio/mp3" },
});
const response = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
"Describe this audio clip",
]),
});
console.log(response.text);
}
await main();
file, err := client.UploadFileFromPath(ctx, "path/to/sample.mp3", nil)
if err != nil {
log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
model := client.GenerativeModel("gemini-2.0-flash")
resp, err := model.GenerateContent(ctx,
genai.FileData{URI: file.URI},
genai.Text("Describe this audio clip"))
if err != nil {
log.Fatal(err)
}
printResponse(resp)
AUDIO_PATH="path/to/sample.mp3"
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO
tmp_header_file=upload-header.tmp
# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "https://generativelanguage.googleapis.com/upload/v1beta/files?key=${GOOGLE_API_KEY}" \
-D upload-header.tmp \
-H "X-Goog-Upload-Protocol: resumable" \
-H "X-Goog-Upload-Command: start" \
-H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
-H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
-H "Content-Type: application/json" \
-d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"
# Upload the actual bytes.
curl "${upload_url}" \
-H "Content-Length: ${NUM_BYTES}" \
-H "X-Goog-Upload-Offset: 0" \
-H "X-Goog-Upload-Command: upload, finalize" \
--data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json
file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri
# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Describe this audio clip"},
{"file_data":{"mime_type": "${MIME_TYPE}", "file_uri": '$file_uri'}}]
}]
}' 2> /dev/null > response.json
cat response.json
echo
jq ".candidates[].content.parts[].text" response.json
মিডিয়া ফাইলগুলির সাথে কাজ করার বিষয়ে আরও জানতে, ফাইল API দেখুন।
অডিও ডেটা ইনলাইনে পাস করুন
একটি অডিও ফাইল আপলোড করার পরিবর্তে, আপনি generateContent
অনুরোধে ইনলাইন অডিও ডেটা পাস করতে পারেন:
from google.genai import types
with open('path/to/small-sample.mp3', 'rb') as f:
audio_bytes = f.read()
response = client.models.generate_content(
model='gemini-2.0-flash',
contents=[
'Describe this audio clip',
types.Part.from_bytes(
data=audio_bytes,
mime_type='audio/mp3',
)
]
)
print(response.text)
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
const base64AudioFile = fs.readFileSync("path/to/small-sample.mp3", {
encoding: "base64",
});
const contents = [
{ text: "Please summarize the audio." },
{
inlineData: {
mimeType: "audio/mp3",
data: base64AudioFile,
},
},
];
const response = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: contents,
});
console.log(response.text);
// Initialize a Gemini model appropriate for your use case.
model := client.GenerativeModel("gemini-2.0-flash")
bytes, err := os.ReadFile("path/to/small-sample.mp3")
if err != nil {
log.Fatal(err)
}
prompt := []genai.Part{
genai.Blob{MIMEType: "audio/mp3", Data: bytes},
genai.Text("Please summarize the audio."),
}
// Generate content using the prompt.
resp, err := model.GenerateContent(ctx, prompt...)
if err != nil {
log.Fatal(err)
}
// Handle the response of generated text
for _, c := range resp.Candidates {
if c.Content != nil {
fmt.Println(*c.Content)
}
}
ইনলাইন অডিও ডেটা সম্পর্কে কিছু জিনিস মনে রাখতে হবে:
- সর্বাধিক অনুরোধের আকার হল 20 এমবি, যার মধ্যে পাঠ্য প্রম্পট, সিস্টেম নির্দেশাবলী এবং ইনলাইনে দেওয়া ফাইলগুলি অন্তর্ভুক্ত রয়েছে। যদি আপনার ফাইলের আকার মোট অনুরোধের আকার 20 MB ছাড়িয়ে যায়, তাহলে অনুরোধে ব্যবহারের জন্য একটি অডিও ফাইল আপলোড করতে Files API ব্যবহার করুন।
- আপনি যদি একাধিকবার একটি অডিও নমুনা ব্যবহার করেন, তাহলে একটি অডিও ফাইল আপলোড করা আরও কার্যকর।
একটি প্রতিলিপি পান
অডিও ডেটার একটি প্রতিলিপি পেতে, শুধুমাত্র প্রম্পটে এটির জন্য জিজ্ঞাসা করুন:
myfile = client.files.upload(file='path/to/sample.mp3')
prompt = 'Generate a transcript of the speech.'
response = client.models.generate_content(
model='gemini-2.0-flash',
contents=[prompt, myfile]
)
print(response.text)
import {
GoogleGenAI,
createUserContent,
createPartFromUri,
} from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
const myfile = await ai.files.upload({
file: "path/to/sample.mp3",
config: { mimeType: "audio/mpeg" },
});
const result = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
"Generate a transcript of the speech.",
]),
});
console.log("result.text=", result.text);
// Initialize a Gemini model appropriate for your use case.
model := client.GenerativeModel("gemini-2.0-flash")
// Create a prompt using text and the URI reference for the uploaded file.
prompt := []genai.Part{
genai.FileData{URI: sampleAudio.URI},
genai.Text("Generate a transcript of the speech."),
}
// Generate content using the prompt.
resp, err := model.GenerateContent(ctx, prompt...)
if err != nil {
log.Fatal(err)
}
// Handle the response of generated text
for _, c := range resp.Candidates {
if c.Content != nil {
fmt.Println(*c.Content)
}
}
টাইমস্ট্যাম্প পড়ুন
আপনি MM:SS
ফর্মের টাইমস্ট্যাম্প ব্যবহার করে একটি অডিও ফাইলের নির্দিষ্ট বিভাগগুলি উল্লেখ করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত প্রম্পট একটি প্রতিলিপি অনুরোধ করে যে
- ফাইলের শুরু থেকে 2 মিনিট 30 সেকেন্ডে শুরু হয়।
ফাইলের শুরু থেকে 3 মিনিট 29 সেকেন্ডে শেষ হয়।
# Create a prompt containing timestamps.
prompt = "Provide a transcript of the speech from 02:30 to 03:29."
// Create a prompt containing timestamps.
const prompt = "Provide a transcript of the speech from 02:30 to 03:29."
// Create a prompt containing timestamps.
prompt := []genai.Part{
genai.FileData{URI: sampleAudio.URI},
genai.Text("Provide a transcript of the speech from 02:30 to 03:29."),
}
টোকেন গণনা করুন
একটি অডিও ফাইলে টোকেনের সংখ্যা গণনা পেতে countTokens
পদ্ধতিতে কল করুন। যেমন:
response = client.models.count_tokens(
model='gemini-2.0-flash',
contents=[myfile]
)
print(response)
import {
GoogleGenAI,
createUserContent,
createPartFromUri,
} from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
const myfile = await ai.files.upload({
file: "path/to/sample.mp3",
config: { mimeType: "audio/mpeg" },
});
const countTokensResponse = await ai.models.countTokens({
model: "gemini-2.0-flash",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
]),
});
console.log(countTokensResponse.totalTokens);
tokens, err := model.CountTokens(ctx, genai.FileData{URI: sampleAudio.URI})
if err != nil {
log.Fatal(err)
}
fmt.Printf("File %s is %d tokens", sampleAudio.DisplayName, tokens.TotalTokens)
সমর্থিত অডিও ফরম্যাট
জেমিনি নিম্নলিখিত অডিও ফর্ম্যাট MIME প্রকারগুলিকে সমর্থন করে:
- WAV -
audio/wav
- MP3 -
audio/mp3
- AIFF -
audio/aiff
- AAC -
audio/aac
- OGG Vorbis -
audio/ogg
- FLAC -
audio/flac
অডিও সম্পর্কে প্রযুক্তিগত বিবরণ
- মিথুন অডিওর প্রতিটি সেকেন্ড 32 টোকেন হিসাবে উপস্থাপন করে; উদাহরণস্বরূপ, এক মিনিটের অডিওকে 1,920 টোকেন হিসাবে উপস্থাপন করা হয়।
- মিথুন শুধুমাত্র ইংরেজি ভাষার বক্তৃতার প্রতিক্রিয়া অনুমান করতে পারে।
- মিথুন অ-বক্তৃতা উপাদান "বুঝতে" পারে, যেমন পাখির গান বা সাইরেন।
- একক প্রম্পটে অডিও ডেটার সর্বাধিক সমর্থিত দৈর্ঘ্য হল 9.5 ঘন্টা। মিথুন একটি একক প্রম্পটে অডিও ফাইলের সংখ্যা সীমাবদ্ধ করে না; যাইহোক, একটি একক প্রম্পটে সমস্ত অডিও ফাইলের মোট সম্মিলিত দৈর্ঘ্য 9.5 ঘন্টার বেশি হতে পারে না।
- Gemini অডিও ফাইলগুলিকে 16 Kbps ডেটা রেজোলিউশনে নমুনা দেয়।
- অডিও উৎসে একাধিক চ্যানেল থাকলে, মিথুন সেই চ্যানেলগুলিকে একক চ্যানেলে একত্রিত করে।
এরপর কি
এই নির্দেশিকাটি দেখায় কিভাবে অডিও ডেটার প্রতিক্রিয়ায় পাঠ্য তৈরি করতে হয়। আরও জানতে, নিম্নলিখিত সংস্থানগুলি দেখুন:
- ফাইল প্রম্পটিং কৌশল : জেমিনি এপিআই টেক্সট, ইমেজ, অডিও এবং ভিডিও ডেটা সহ প্রম্পটিং সমর্থন করে, যা মাল্টিমডাল প্রম্পটিং নামেও পরিচিত।
- সিস্টেম নির্দেশাবলী : সিস্টেম নির্দেশাবলী আপনাকে আপনার নির্দিষ্ট প্রয়োজন এবং ব্যবহারের ক্ষেত্রের উপর ভিত্তি করে মডেলের আচরণ পরিচালনা করতে দেয়।
- নিরাপত্তা নির্দেশিকা : কখনও কখনও জেনারেটিভ এআই মডেলগুলি অপ্রত্যাশিত আউটপুট তৈরি করে, যেমন আউটপুটগুলি ভুল, পক্ষপাতদুষ্ট বা আপত্তিকর। এই ধরনের আউটপুট থেকে ক্ষতির ঝুঁকি সীমিত করার জন্য পোস্ট-প্রসেসিং এবং মানব মূল্যায়ন অপরিহার্য।