Android-텍스트 음성 변환
Android에서는 텍스트를 음성으로 변환 할 수 있습니다. 변환 할 수있을뿐만 아니라 다양한 언어로 텍스트를 말할 수도 있습니다.
Android는 TextToSpeech이 목적을 위해 클래스. 이 클래스를 사용하려면이 클래스의 객체를 인스턴스화하고initListener. 구문은 다음과 같습니다.
private EditText write;
ttobj=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
}
});
이 리스너에서 언어, 피치 등과 같은 TextToSpeech 객체의 속성을 지정해야합니다. 언어는 다음을 호출하여 설정할 수 있습니다. setLanguage()방법. 구문은 다음과 같습니다.
ttobj.setLanguage(Locale.UK);
setLanguage 메소드는 Locale 객체를 매개 변수로 사용합니다. 사용 가능한 일부 로케일 목록은 다음과 같습니다.
Sr. 아니요 | 장소 |
---|---|
1 | 우리 |
2 | CANADA_FRENCH |
삼 | 독일 |
4 | 이탈리아 |
5 | 일본 |
6 | 중국 |
언어를 설정하면 speak텍스트를 말하는 클래스의 방법. 구문은 다음과 같습니다.
ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
speak 메서드 외에도 TextToSpeech 클래스에서 사용할 수있는 몇 가지 다른 메서드가 있습니다. 그들은 아래에 나열되어 있습니다-
Sr. 아니요 | 방법 및 설명 |
---|---|
1 | addSpeech(String text, String filename) 이 메서드는 텍스트 문자열과 사운드 파일 간의 매핑을 추가합니다. |
2 | getLanguage() 이 메서드는 언어를 설명하는 Locale 인스턴스를 반환합니다. |
삼 | isSpeaking() 이 메서드는 TextToSpeech 엔진이 말하는 중인지 확인합니다. |
4 | setPitch(float pitch) 이 메서드는 TextToSpeech 엔진의 음성 피치를 설정합니다. |
5 | setSpeechRate(float speechRate) 이 방법은 말하기 속도를 설정합니다. |
6 | shutdown() 이 메서드는 TextToSpeech 엔진에서 사용하는 리소스를 해제합니다. |
7 | stop() 이 방법은 말하기를 중지합니다. |
예
아래 예제는 TextToSpeech 클래스의 사용을 보여줍니다. 쓰기 텍스트를 설정하고 말할 수있는 기본 응용 프로그램을 만듭니다.
이 예제를 실험하려면 실제 기기에서 실행해야합니다.
단계 | 기술 |
---|---|
1 | Android 스튜디오를 사용하여 com.example.sairamkrishna.myapplication 패키지 아래에 Android 애플리케이션을 만듭니다. |
2 | src / MainActivity.java 파일을 수정하여 TextToSpeech 코드를 추가합니다. |
삼 | 레이아웃 XML 파일 res / layout / activity_main.xml 수정 필요한 경우 GUI 구성 요소를 추가하십시오. |
4 | 애플리케이션을 실행하고 실행중인 Android 기기를 선택하고 여기에 애플리케이션을 설치하고 결과를 확인합니다. |
내용은 다음과 같습니다. 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();
}
}
내용은 다음과 같습니다. activity_main.xml
다음 코드에서 abctutorialspoint.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>
내용은 다음과 같습니다. Strings.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
내용은 다음과 같습니다. 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>
애플리케이션을 실행 해 보겠습니다. 실제 Android 모바일 장치를 컴퓨터에 연결했다고 가정합니다. Android 스튜디오에서 앱을 실행하려면 프로젝트의 활동 파일 중 하나를 열고
옵션으로 모바일 장치를 선택하고 다음 화면이 표시되는 모바일 장치를 확인하십시오.
이제 필드에 텍스트를 입력하고 아래의 텍스트 음성 변환 버튼을 클릭하십시오. 알림이 표시되고 텍스트가 음성으로 표시됩니다. 아래 이미지에 나와 있습니다.
이제 다른 것을 입력하고 다른 로케일로 단계를 다시 반복하십시오. 다시 소리가 들릴 것입니다. 이것은 아래에 표시됩니다-