شما میتوانید از یک مدل Gemini بخواهید فایلهای صوتی که شما ارائه میدهید را چه به صورت درونخطی (با کدگذاری base64) و چه از طریق URL تجزیه و تحلیل کند. وقتی از Firebase AI Logic استفاده میکنید، میتوانید این درخواست را مستقیماً از برنامه خود انجام دهید.
با این قابلیت، میتوانید کارهایی مانند موارد زیر را انجام دهید:
- توصیف، خلاصه کردن یا پاسخ به سوالات مربوط به محتوای صوتی
- رونویسی محتوای صوتی
- بخشهای خاصی از صدا را با استفاده از مهرهای زمانی تجزیه و تحلیل کنید
این راهنما در مورد تولید متن از ورودی صوتی است.
پرش به نمونههای کد پرش به کد برای پاسخهای استریمشده
| برای گزینههای بیشتر برای کار با صدا، به راهنماهای دیگر مراجعه کنید. تولید خروجی ساختاریافته چت چندزبانه تبدیل متن به گفتار (TTS) استریمینگ دوطرفه |
قبل از اینکه شروع کنی
برای مشاهده محتوا و کد مخصوص ارائهدهنده در این صفحه، روی ارائهدهنده API Gemini خود کلیک کنید. |
اگر هنوز این کار را نکردهاید، راهنمای شروع به کار را تکمیل کنید، که نحوه راهاندازی پروژه Firebase، اتصال برنامه به Firebase، افزودن SDK، راهاندازی سرویس backend برای ارائهدهنده API انتخابی Gemini و ایجاد یک نمونه GenerativeModel شرح میدهد.
شما میتوانید از این فایل عمومی با نوع MIME
audio/mp3( مشاهده یا دانلود فایل ) استفاده کنید.https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/pixel.mp3
مدلهایی که از این قابلیت پشتیبانی میکنند
این راهنما در مورد تولید متن از ورودی صوتی است و برای مدلهای Gemini زیر قابل استفاده است:
-
gemini-3.1-pro-preview -
gemini-3.8-flash(و نسخههای قدیمیترgemini-3.7-flash،gemini-3.6-flashوgemini-3.5-flash) -
gemini-3.5-flash-lite(و نسخه قدیمیترgemini-3.1-flash-lite)
مدلهای عمومی Gemini 2.5 از این قابلیت پشتیبانی میکنند، اما همه آنها منسوخ شدهاند.
تولید متن از فایلهای صوتی (با کدگذاری base64)
| قبل از امتحان کردن این نمونه، بخش «قبل از شروع» این راهنما را برای راهاندازی پروژه و برنامه خود تکمیل کنید. در آن بخش، شما همچنین میتوانید روی دکمهای برای ارائهدهندهی API Gemini انتخابی خود کلیک کنید تا محتوای خاص ارائهدهنده را در این صفحه مشاهده کنید . |
شما میتوانید از یک مدل Gemini بخواهید با ارائه متن و صدا، متن تولید کند - و mimeType فایل ورودی و خود فایل را ارائه دهد. الزامات و توصیههایی برای فایلهای ورودی را بعداً در این صفحه بیابید.
سویفت
شما میتوانید تابع generateContent() را برای تولید متن از ورودی چندوجهی متن و یک فایل صوتی واحد فراخوانی کنید.
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case.
let model = ai.generativeModel(modelName: "gemini-3.8-flash")
// Provide the audio as `Data`
guard let audioData = try? Data(contentsOf: audioURL) else {
print("Error loading audio data.")
return // Or handle the error appropriately
}
// Specify the appropriate audio MIME type
let audio = InlineDataPart(data: audioData, mimeType: "audio/mpeg")
// Provide a text prompt to include with the audio
let prompt = "Transcribe what's said in this audio recording."
// To generate text output, call `generateContent` with the audio and text prompt
let response = try await model.generateContent(audio, prompt)
// Print the generated text, handling the case where it might be nil
print(response.text ?? "No text in response.")
Kotlin
شما میتوانید تابع generateContent() را برای تولید متن از ورودی چندوجهی متن و یک فایل صوتی واحد فراخوانی کنید.
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash")
val contentResolver = applicationContext.contentResolver
val inputStream = contentResolver.openInputStream(audioUri)
if (inputStream != null) { // Check if the audio loaded successfully
inputStream.use { stream ->
val bytes = stream.readBytes()
// Provide a prompt that includes the audio specified above and text
val prompt = content {
inlineData(bytes, "audio/mpeg") // Specify the appropriate audio MIME type
text("Transcribe what's said in this audio recording.")
}
// To generate text output, call `generateContent` with the prompt
val response = model.generateContent(prompt)
// Log the generated text, handling the case where it might be null
Log.d(TAG, response.text?: "")
}
} else {
Log.e(TAG, "Error getting input stream for audio.")
// Handle the error appropriately
}
Java
شما میتوانید تابع generateContent() را برای تولید متن از ورودی چندوجهی متن و یک فایل صوتی واحد فراخوانی کنید.
ListenableFuture برمیگردانند.
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
ContentResolver resolver = getApplicationContext().getContentResolver();
try (InputStream stream = resolver.openInputStream(audioUri)) {
File audioFile = new File(new URI(audioUri.toString()));
int audioSize = (int) audioFile.length();
byte audioBytes = new byte[audioSize];
if (stream != null) {
stream.read(audioBytes, 0, audioBytes.length);
stream.close();
// Provide a prompt that includes the audio specified above and text
Content prompt = new Content.Builder()
.addInlineData(audioBytes, "audio/mpeg") // Specify the appropriate audio MIME type
.addText("Transcribe what's said in this audio recording.")
.build();
// To generate text output, call `generateContent` with the prompt
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String text = result.getText();
Log.d(TAG, (text == null) ? "" : text);
}
@Override
public void onFailure(Throwable t) {
Log.e(TAG, "Failed to generate a response", t);
}
}, executor);
} else {
Log.e(TAG, "Error getting input stream for file.");
// Handle the error appropriately
}
} catch (IOException e) {
Log.e(TAG, "Failed to read the audio file", e);
} catch (URISyntaxException e) {
Log.e(TAG, "Invalid audio file", e);
}
Web
شما میتوانید تابع generateContent() را برای تولید متن از ورودی چندوجهی متن و یک فایل صوتی واحد فراخوانی کنید.
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case.
const model = getGenerativeModel(ai, { model: "gemini-3.8-flash" });
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(','));
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the audio
const prompt = "Transcribe what's said in this audio recording.";
// Prepare audio for input
const fileInputEl = document.querySelector("input[type=file]");
const audioPart = await fileToGenerativePart(fileInputEl.files);
// To generate text output, call `generateContent` with the text and audio
const result = await model.generateContent([prompt, audioPart]);
// Log the generated text, handling the case where it might be undefined
console.log(result.response.text() ?? "No text in response.");
}
run();
Dart
شما میتوانید تابع generateContent() را برای تولید متن از ورودی چندوجهی متن و یک فایل صوتی واحد فراخوانی کنید.
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-3.8-flash');
// Provide a text prompt to include with the audio
final prompt = TextPart("Transcribe what's said in this audio recording.");
// Prepare audio for input
final audio = await File('audio0.mp3').readAsBytes();
// Provide the audio as `Data` with the appropriate audio MIME type
final audioPart = InlineDataPart('audio/mpeg', audio);
// To generate text output, call `generateContent` with the text and audio
final response = await model.generateContent([
Content.multi([prompt,audioPart])
]);
// Print the generated text
print(response.text);
وحدت
شما میتوانید تابع GenerateContentAsync() را برای تولید متن از ورودی چندوجهی متن و یک فایل صوتی واحد فراخوانی کنید.
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI