?? playermodelimpl.java
字號:
/*******************************************************************************
* Copyright (c) 2004 Berthold Daum. All rights reserved. This program and the
* accompanying materials are made available under the terms of the Common
* Public License v1.0 which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors: Berthold Daum
******************************************************************************/
package com.bdaum.dukeSpeaks;
import com.sun.speech.freetts.Voice;
/** * @author Berthold Daum * * created: 13.08.2002 */public class PlayerModelImpl implements PlayerModel { // the Voice instance used in this model private Voice voice; // Semaphore for inhibiting double playing private boolean playing = false; /** * Method PlayerModelImpl. * @param voice a FreeTTS voice object. */ public PlayerModelImpl(Voice voice) { this.voice = voice; } /** * @see PlayerModel#play(String) */ public void play(final String text) { // do nothing if player runs already. if (playing) return; // Set semaphore to true playing = true; // The speech process runs in a separate thread
// that is managed by the SwingWorker instance worker
final SwingWorker worker = new SwingWorker() { public Object construct() { // This is where we speak voice.speak(text); return null; } };
worker.start(); // Reset semaphore playing = false; } /** * @see PlayerModel#getVolume() */ public float getVolume() { // Get volume from Voice instance // and convert to scale range 0-10 float adjustedVolume = voice.getVolume(); return (adjustedVolume < 0.5) ? 0f : (float) ((adjustedVolume - 0.5) * 20); } /** * @see PlayerModel#setVolume(float) */ public void setVolume(float volume) { // Set volume in Voice instance // convert from scale range 0-10 to Voice range 0.5-1.0 float adjustedVolume = (float) (volume / 20 + 0.5); voice.setVolume(adjustedVolume); } /** * @see PlayerModel#getSpeakingRate() */ public float getSpeakingRate() { // Get speaking rate from Voice instance return voice.getRate(); } /** * @see PlayerModel#setSpeakingRate(float) */ public void setSpeakingRate(float wordsPerMin) { // Set speaking rate in Voice instance voice.setRate(wordsPerMin); } /** * @see PlayerModel#getPitch() */ public float getPitch() { // Get pitch from Voice instance return voice.getPitch(); } /** * @see PlayerModel#setPitch(float) */ public void setPitch(float pitch) { // Set pitch in Voice instance voice.setPitch(pitch); } /** * @see PlayerModel#getRange() */ public float getRange() { // Get variation from Voice instance return voice.getPitchRange(); } /** * @see PlayerModel#setRange(float) */ public void setRange(float range) { // Set variation in Voice instance voice.setPitchRange(range); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -