Android 개발 텍스트 내용 자동 낭독 기능 구현 방법
Android 는 자동 낭독 지원 을 제공 합 니 다.자동 낭독 지원 은 지정 한 텍스트 내용 을 낭독 하여 소 리 를 낼 수 있 습 니 다.뿐만 아니 라 안 드 로 이 드 의 자동 낭독 지원 은 텍스트 에 대응 하 는 오디 오 녹음 을 오디 오 파일 로 만들어 나중에 재생 하기에 편리 하도록 허용 한다.이 자동 낭독 이 지원 하 는 영어 이름 은 TextToSpeech 로 TTS 라 고 부른다.
TTS 의 지원 을 받 아 응용 프로그램 에서 음성 출력 을 동적 으로 증가 시 켜 사용자 체험 을 개선 할 수 있다.
Android 의 자동 낭독 지원 은 주로 TextTospeech 를 통 해 이 루어 집 니 다.이 피 로 는 다음 과 같은 구조 기 를 제공 합 니 다.
TextTospeech(Context context, TextTospeech.OnInitListenerlistener)
위의 구조 기 에서 책 을 보기 어렵 지 않 습 니 다.TextTospeech 대상 을 만 들 때 OnInitListener 감청 기 를 먼저 제공 해 야 합 니 다.이 감청 기 는 TextTospeech 의 초기 화 결 과 를 감청 합 니 다.프로그램 에서 TextTospeech 대상 을 얻 으 면 TTS 발성 엔진 에 사용 할 언어,국가 옵션 을 설정 할 수 있 습 니 다.
setLanguage(Localelc)를 호출 하면 되 돌아 오 는 값 이"TextToSpeech.LANG"입 니 다.COUNTRY_AVAILABLE 는 현재 TTS 시스템 이 설 정 된 언어,국가 옵션 을 지원 할 수 있 음 을 설명 합 니 다.
TextToSpeech 설정 이 완료 되면 텍스트 를 읽 는 방법 을 사용 할 수 있 습 니 다.구체 적 인 방법 은 TextToSpeech 의 API 문 서 를 참고 할 수 있 습 니 다.TextToSpeech 류 에서 가장 많이 사용 되 는 방법 은 다음 과 같다.
speak(String text,int queueMode,HashMap<String,String>params)
synthesizeToFile(Stringtext,HashMap<String,String>params,String filename)
위의 두 가지 방법 은 모두 text 문자 의 내용 을 오디 오 로 변환 하 는 데 사 용 됩 니 다.speak 방법 은 재생 변환 오디 오 일 뿐,synthesizeToFile 은 변 환 된 오디 오 를 음성 파일 로 저장 합 니 다.위의 두 가지 방법 중의 params 는 모두 음성 변환 시의 매개 변 수 를 지정 하 는 데 사 용 됩 니 다.
TextTospeech setLanguage(Localeloc)
방법 중의 quueMode 매개 변 수 는 TTS 발음 대기 열 모드 를 지정 합 니 다.이 매개 변 수 는 다음 과 같은 두 개의 상수 를 지원 합 니 다.TextToSpeech.QUEUE_FLUSH:이 모드 를 지정 하면 TTS 가 speak 방법 을 호출 할 때 현재 인 스 턴 스 가 실행 중인 작업 을 중단 합 니 다(현재 음성 작업 을 잘 알 고 새로운 음성 작업 을 수행 하 는 것 으로 도 이해 할 수 있 습 니 다)
TextToSpeech.QUEUE_ADD:이 모드 를 지정 하면 TTS 가 speak 방법 을 호출 할 때 새로운 발음 작업 을 현재 발음 작업 줄 에 추가 합 니 다.즉,작업 대기 열 에 있 는 발음 작업 이 완 료 된 후에 speak()방법 이 지정 한 발음 작업 을 수행 합 니 다.
프로그램 이 TextToSpeech 대상 을 다 사용 한 후에 Activity 의 OnDestroy()방법 에서 shutdown()을 호출 하여 TextToSpeech 를 닫 고 사용 하 는 자원 을 방출 할 수 있 습 니 다.
요약 하면 TextToSpeech 를 사용 하 는 절 차 는 다음 과 같다.
1.TextToSpeech 대상 을 만 들 고 생 성 할 때 OnInitListener 모니터 감청 생 성 에 성공 할 지 여부 입 니 다.
2.TextToSpeech 가 사용 하 는 언어,국가 옵션 을 설정 하고 반환 값 을 통 해 TTS 가 해당 언어,국가 옵션 을 지원 하 는 지 판단 합 니 다.
3.speak()또는 synthesizeToFile 방법 을 호출 합 니 다.
4.TTS 를 닫 고 자원 을 회수 합 니 다.
다음 프로그램 은 TTS 를 이용 하여 사용자 가 입력 한 텍스트 내용 을 읽 는 방법 을 보 여 줍 니 다.
Speech.java:
public class Speech extends Activity
{
TextToSpeech tts;
EditText editText;
Button speech;
Button record;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// TextToSpeech
tts = new TextToSpeech(this, new OnInitListener()
{
@Override
public void onInit(int status)
{
// TTS
if (status == TextToSpeech.SUCCESS)
{
//
int result = tts.setLanguage(Locale.US);
//
if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
&& result != TextToSpeech.LANG_AVAILABLE)
{
Toast.makeText(Speech.this, "TTS 。", 50000)
.show();
}
}
}
});
editText = (EditText) findViewById(R.id.txt);
speech = (Button) findViewById(R.id.speech);
record = (Button) findViewById(R.id.record);
speech.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
//
tts.speak(editText.getText().toString(),
TextToSpeech.QUEUE_ADD, null);
}
});
record.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
//
tts.synthesizeToFile(editText.getText().toString(), null, "/mnt/sdcard/sound.wav");
Toast.makeText(Speech.this, " !", 50000).show();
}
});
}
@Override
public void onDestroy()
{
// TextToSpeech
if (tts != null)
{
tts.shutdown();
}
}
}
위의 프로그램의 첫 번 째 줄 굵 은 글자 코드 설정 은 TextToSpeech 대상 을 만 들 었 고 두 번 째 줄 굵 은 글 자 는 미국식 영어 로 영어 낭독 을 했다.다음 프로그램 은 각각 두 개의 단 추 를 체통 하 였 으 며,하나의 단 추 는 낭독 을 실행 하 는 데 사용 되 었 으 며,하나의 단 추 는 텍스트 내용 의 낭독 오디 오 를 음성 파일 로 저장 하 는 데 사용 되 었 으 며,각각 TextToSpeech 대상 을 호출 하 는 두 가지 방법 으로 이 루어 졌 다.프로그램 을 실행 하면 다음 그림 인터페이스 를 볼 수 있 습 니 다:
인터페이스 에서 사용자 가'읽 기'단 추 를 누 르 면 시스템 은 TTS 의 speak()방법 으로 텍스트 상자 의 내용 을 읽 습 니 다.사용자 가'사 운 드 기록'단 추 를 누 르 면 시스템 은
speak()
방법 으로 텍스트 상자 의 텍스트 에 해당 하 는 낭독 오디 오 를 SD 카드 의 사 운 드 파일 에 기록 합 니 다.이 단 추 를 누 르 면 SD 카드 의 루트 디 렉 터 리 에 sound.wav 파일 을 생 성 할 수 있 습 니 다.이 파일 은 내 보 내 고 다른 오디 오 재생 소프트웨어 에서 재생 할 수 있 습 니 다.프로그램 이 Activity
synthesizeToFile()
방법 을 다시 쓰 고 이 방법 에서 TextToSpeech 대상 을 닫 고 자원 을 회수 했다.알림:서로 다른 문자 로 인해 서로 다른 언어,국가 에서 의 발음 이 다 릅 니 다.특히 유럽 과 미국 은 모두 자모 문 자 를 사용 하기 때문에 한 단락 의 텍스트 내용 은 서로 다른 언어,국가 옵션 으로 낭독 하고 발음 효 과 는 전혀 다 릅 니 다.현재 Android 의 TTS 는 당분간 중국 어 를 지원 하지 않 습 니 다.
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,,,,그리고 을 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.