核心代码
package com.read.util;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import cn.hutool.core.io.FileUtil;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class SoundUtil {
public static void read(String content) {
try {
FileInputStream file = new FileInputStream(FileUtil.getAbsolutePath("sound\\" + content + ".wav"));
AudioStream as = new AudioStream(file);
AudioPlayer.player.start(as);
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void readWord(String pinYin) {
try {
FileInputStream file = new FileInputStream(FileUtil.getAbsolutePath("word\\" + pinYin + ".wav"));
AudioStream as = new AudioStream(file);
AudioPlayer.player.start(as);
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 阅读多少号到多少窗口
*
* @param ss
* @param winF
* @throws IOException
* @throws InterruptedException
*/
public static synchronized void playSound(String ss, String name, String winF)
throws IOException, InterruptedException {
read("please");
List<String> pinYinList = PinYinUtil.getPinYinWidthTone(name);
for (String pinYin : pinYinList) {
readWord(pinYin);
}
Thread.sleep(400);
for (int i = 0; i < ss.length(); i++) {
read(String.valueOf(ss.charAt(i)));
}
read("dao");
for (int i = 0; i < winF.length(); i++) {
read(String.valueOf(winF.charAt(i)));
}
read("last");
}
/**
* 测试playSound()方法的作用
*/
public static void main(String[] args) {
try {
SoundUtil.playSound("A2015", "赵本山", "8");
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
汉子转换拼音
package com.read.util;
import com.google.common.collect.Lists;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import java.util.List;
/**
* @author: ZhangHouYing
* @date: 2021-09-23 21:15
*/
public class PinYinUtil {
public static void main(String[] args) {
System.out.println(getPinYinWidthTone("中国红"));
}
/**
* @param china (字符串 汉字)
* @return 汉字转拼音 其它字符不变
*/
public static String getPinyin(String china) {
HanyuPinyinOutputFormat formart = new HanyuPinyinOutputFormat();
formart.setCaseType(HanyuPinyinCaseType.LOWERCASE);
formart.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
formart.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] arrays = china.trim().toCharArray();
String result = "";
try {
for (int i = 0; i < arrays.length; i++) {
char ti = arrays[i];
if (Character.toString(ti).matches("[\\u4e00-\\u9fa5]")) { //匹配是否是中文
String[] temp = PinyinHelper.toHanyuPinyinStringArray(ti, formart);
result += temp[0];
} else {
result += ti;
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return result;
}
public static List<String> getPinYinWidthTone(String src) {
List<String> pinYinList = Lists.newArrayList();
char[] t1 = null;
t1 = src.toCharArray();
String[] t2 = new String[t1.length];
//format是全部的拼音并且带声调
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
int t0 = t1.length;
try {
for (int i = 0; i < t0; i++) {
// 判断是否为汉字字符
if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], format);
pinYinList.add(t2[0]);
} else {
pinYinList.add(java.lang.Character.toString(t1[i]));
}
}
} catch (BadHanyuPinyinOutputFormatCombination e1) {
e1.printStackTrace();
}
return pinYinList;
}
}
依赖pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.read</groupId>
<artifactId>reader</artifactId>
<version>1.0.0</version>
<name>reader</name>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>26.0-jre</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.11</version>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
</project>