Xây dựng mobile app sử dụng Vision API và Text to speech API của Open AI với expo để thuyết minh hình ảnh đó có kèm theo văn bản Hãy hướng dẫn tôi phần code
Vâng, hãy chuẩn bị để đi vào một hành trình mã hóa, nơi AI không chỉ là một người thợ code mà còn là một du khách vui vẻ! Bạn sẽ tạo một ứng dụng di động với Expo, sử dụng Vision API để nhận dạng hình ảnh và Text to Speech API để chuyển đổi văn bản thành lời nói. Đây là một cuộc phiêu lưu đầy thú vị trong thế giới của mã và máy móc!
Chúng ta sẽ đi qua các bước cơ bản:
Cài đặt Expo: Đầu tiên, hãy đảm bảo bạn đã cài đặt expo-cli
bằng lệnh npm install -g expo-cli
. Nếu bạn mới mở lối vào thế giới Expo, hãy truy cập trituenhantao.io để có một lộ trình chi tiết nhé!
Khởi tạo dự án Expo: Tạo một dự án mới bằng lệnh expo init AwesomeImageNarrator
. Chọn mẫu phù hợp, ví dụ 'blank'.
Cài đặt các thư viện cần thiết:
expo install expo-camera expo-speech react-native-voice @react-native-community/cameraroll
npm install @google-cloud/vision
Cấu hình API cho Google Vision: Bạn cần tạo một key.json
từ Google Cloud Console để sử dụng Vision API.
Viết mã để sử dụng Vision API và Text to Speech API:
Ta sẽ viết một hàm cho Vision API:
async function analyzeImage(imageUri) {
try {
const response = await fetch(imageUri);
const blob = await response.blob();
// Thay 'YOUR_GOOGLE_CLOUD_VISION_API_KEY' bằng key thực của bạn
const googleVisionRes = await fetch(
`https://vision.googleapis.com/v1/images:annotate?key=YOUR_GOOGLE_CLOUD_VISION_API_KEY`,
{
method: 'POST',
body: JSON.stringify({
requests: [
{
image: {
content: blob
},
features: [
{ type: 'LABEL_DETECTION', maxResults: 10 },
{ type: 'TEXT_DETECTION' },
],
},
],
}),
}
);
const json = await googleVisionRes.json();
return json.responses[0];
} catch (error) {
console.log(error);
alert('Lượt phiêu lưu này có vẻ gặp sự cố: ' + error.message);
}
}
Tạo giao diện để chọn hình ảnh và hiển thị thông tin:
Dùng ImagePicker
để lấy hình ảnh, sau đó dùng hàm analyzeImage
để phân tích và cuối cùng sử dụng expo-speech
để chuyển đổi kết quả văn bản thành âm thanh:
import { Speech } from 'expo-speech';
// Xử lý và nói văn bản từ hình ảnh
async function handleImagePicked(pickerResult) {
if (!pickerResult.cancelled) {
const analysis = await analyzeImage(pickerResult.uri);
const labels = analysis.labelAnnotations.map(obj => obj.description).join(', ');
const textAnnotations = analysis.textAnnotations ? analysis.textAnnotations[0].description : '';
const combinedText = `I see: ${labels}. And I read: ${textAnnotations}`;
Speech.speak(combinedText, {
language: 'en',
pitch: 1.0,
rate: 0.75
});
}
}
Xây dựng hàm main để chụp hình và thuyết minh:
import React from 'react';
import { StyleSheet, Text, View, Button, Image } from 'react-native';
import * as ImagePicker from 'expo-image-picker';
export default function App() {
// Đây sẽ là space cho bạn - để hiển thị nút và feedback
return (
<View style={styles.container}>
{/* Code để chụp ảnh hoặc chọn từ thư viện */}
<Button title="Pick an image from camera roll"/>
<Image /* Hiển thị hình ảnh đã chọn */ />
<Text /* Thông tin được phân tích từ hình ảnh */ />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
});
🔍 Chú ý: Đoạn mã trên là khuôn mẫu cơ bản. Để ứng dụng hoạt động, bạn cần phải viết mã điều khiển cho Button
để kích hoạt ImagePicker
, hiển thị Image
đã chọn và gọi handleImagePicked
lên kết quả từ ImagePicker
.
Giờ thì đừng chỉ đứng đó nhìn mã như một tác phẩm nghệ thuật, hãy thử nó đi! Và nếu bạn cần một người bạn đồng hành trên con đường khám phá AI này, đừng quên ghé thăm trituenhantao.io để cùng chúng tôi tạo ra những điều kỳ diệu. Chúc bạn một ngày "code" vui vẻ! 🚀