Android - Chuyển văn bản thành giọng nói

Android cho phép bạn chuyển văn bản của mình thành giọng nói. Bạn không chỉ có thể chuyển đổi nó mà còn cho phép bạn nói văn bản bằng nhiều ngôn ngữ khác nhau.

Android cung cấp TextToSpeechlớp cho mục đích này. Để sử dụng lớp này, bạn cần khởi tạo một đối tượng của lớp này và cũng chỉ địnhinitListener. Cú pháp của nó được đưa ra dưới đây:

private EditText write;
ttobj=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
   @Override
   public void onInit(int status) {
   }
});

Trong trình nghe này, bạn phải chỉ định các thuộc tính cho đối tượng TextToSpeech, chẳng hạn như ngôn ngữ của nó, cao độ, v.v. Ngôn ngữ có thể được đặt bằng cách gọi setLanguage()phương pháp. Cú pháp của nó được đưa ra dưới đây:

ttobj.setLanguage(Locale.UK);

Phương thức setLanguage nhận một đối tượng Locale làm tham số. Dưới đây là danh sách một số ngôn ngữ có sẵn:

Sr.No Ngôn ngữ
1 CHÚNG TA
2 CANADA_FRENCH
3 NƯỚC ĐỨC
4 NƯỚC Ý
5 NHẬT BẢN
6 TRUNG QUỐC

Khi bạn đã đặt ngôn ngữ, bạn có thể gọi speakphương pháp của lớp để nói văn bản. Cú pháp của nó được đưa ra dưới đây:

ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);

Ngoài phương thức nói, có một số phương thức khác có sẵn trong lớp TextToSpeech. Chúng được liệt kê dưới đây -

Sr.No Phương pháp & mô tả
1

addSpeech(String text, String filename)

Phương pháp này thêm một ánh xạ giữa một chuỗi văn bản và một tệp âm thanh.

2

getLanguage()

Phương thức này trả về một cá thể Locale mô tả ngôn ngữ.

3

isSpeaking()

Phương pháp này kiểm tra xem công cụ TextToSpeech có bận nói hay không.

4

setPitch(float pitch)

Phương pháp này đặt cao độ giọng nói cho công cụ TextToSpeech.

5

setSpeechRate(float speechRate)

Phương pháp này đặt tốc độ giọng nói.

6

shutdown()

Phương pháp này giải phóng các tài nguyên được sử dụng bởi công cụ TextToSpeech.

7

stop()

Phương pháp này dừng nói.

Thí dụ

Ví dụ dưới đây minh họa việc sử dụng lớp TextToSpeech. Nó đóng một ứng dụng cơ bản cho phép bạn thiết lập viết văn bản và nói nó.

Để thử nghiệm với ví dụ này, bạn cần chạy nó trên một thiết bị thực tế.

Các bước Sự miêu tả
1 Bạn sẽ sử dụng Android studio để tạo ứng dụng Android theo gói com.example.sairamkrishna.myapplication.
2 Sửa đổi tệp src / MainActivity.java để thêm mã TextToSpeech.
3 Sửa đổi tệp XML bố cục res / layout / activity_main.xml thêm bất kỳ thành phần GUI nào nếu cần.
4 Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả.

Đây là nội dung của src/MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.Locale;
import android.widget.Toast;

public class MainActivity extends Activity {
   TextToSpeech t1;
   EditText ed1;
   Button b1;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      ed1=(EditText)findViewById(R.id.editText);
      b1=(Button)findViewById(R.id.button);

      t1=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
         @Override
         public void onInit(int status) {
            if(status != TextToSpeech.ERROR) {
               t1.setLanguage(Locale.UK);
            }
         }
      });

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String toSpeak = ed1.getText().toString();
            Toast.makeText(getApplicationContext(), toSpeak,Toast.LENGTH_SHORT).show();
            t1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
         }
      });
   }

   public void onPause(){
      if(t1 !=null){
         t1.stop();
         t1.shutdown();
      }
      super.onPause();
   }
}

Đây là nội dung của activity_main.xml

Trong đoạn mã sau abccho biết logo của tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView android:text="Text to Speech" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:theme="@style/Base.TextAppearance.AppCompat" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/imageView"
      android:layout_marginTop="46dp"
      android:hint="Enter Text"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:textColor="#ff7aff10"
      android:textColorHint="#ffff23d1" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Text to Speech"
      android:id="@+id/button"
      android:layout_below="@+id/editText"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="46dp" />

</RelativeLayout>

Đây là nội dung của Strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Đây là nội dung của AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
   
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
      
         <intent-filter>
            <action android:name="android.intent.action.MAIN" >
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Hãy thử chạy ứng dụng của bạn. Tôi giả sử bạn đã kết nối thiết bị di động Android thực tế với máy tính của mình. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào

biểu tượng Chạy từ thanh công cụ. Trước khi khởi động ứng dụng của bạn, android studio sẽ hiển thị cửa sổ sau để chọn một tùy chọn mà bạn muốn chạy ứng dụng Android của mình.

Chọn thiết bị di động của bạn làm tùy chọn và sau đó kiểm tra thiết bị di động của bạn sẽ hiển thị màn hình sau.

Bây giờ chỉ cần nhập một số văn bản vào trường và nhấp vào nút chuyển văn bản thành giọng nói bên dưới. Một thông báo sẽ xuất hiện và văn bản sẽ được đọc. Nó được hiển thị trong hình ảnh bên dưới -

Bây giờ gõ một cái gì đó khác và lặp lại bước một lần nữa với ngôn ngữ khác. Bạn sẽ lại nghe thấy âm thanh. Điều này được hiển thị bên dưới -