当前位置:   article > 正文

Java语音转文字及文字转语音教学 (离线版)_java语音识别成文字

java语音识别成文字

1. 语音转文字

        1.1 maven导入以下包

  1. <!-- 获取音频信息 -->
  2. <dependency>
  3. <groupId>org</groupId>
  4. <artifactId>jaudiotagger</artifactId>
  5. <version>2.0.3</version>
  6. </dependency>
  7. <!-- 语音识别 -->
  8. <dependency>
  9. <groupId>net.java.dev.jna</groupId>
  10. <artifactId>jna</artifactId>
  11. <version>5.7.0</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>com.alphacephei</groupId>
  15. <artifactId>vosk</artifactId>
  16. <version>0.3.32</version>
  17. </dependency>

        1.2 编写代码

  1. import java.io.FileInputStream;
  2. import java.io.BufferedInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import javax.sound.sampled.AudioSystem;
  6. import javax.sound.sampled.UnsupportedAudioFileException;
  7. import org.vosk.LogLevel;
  8. import org.vosk.Recognizer;
  9. import org.vosk.LibVosk;
  10. import org.vosk.Model;
  11. public class DecoderDemo {
  12. public static void main(String[] argv) throws IOException, UnsupportedAudioFileException {
  13. LibVosk.setLogLevel(LogLevel.DEBUG);
  14. try (Model model = new Model("D:\\model\\vosk-model-small-cn-0.22");
  15. InputStream ais = AudioSystem.getAudioInputStream(new BufferedInputStream(new FileInputStream("D:\\File\\badao.wav")));
  16. Recognizer recognizer = new Recognizer(model, 16000)) {
  17. int bytes;
  18. byte[] b = new byte[4096];
  19. while ((bytes = ais.read(b)) >= 0) {
  20. recognizer.acceptWaveForm(b, bytes);
  21. }
  22. System.out.println(recognizer.getFinalResult() + System.lineSeparator());
  23. }
  24. }
  25. }

注意new Model("模型路径")是你下载的模型解压后的地址

InputStream ais = AudioSystem.getAudioInputStream(new BufferedInputStream(new FileInputStream("音频路径"))); 这个是你要识别的音频地址,我用的音频格式是 wav 其他格式还没试。

没有模型可以去网址: https://alphacephei.com/vosk/models 下载

选择 Chinese 下载这两个模型 (建议都下载 small模型识别快一点)

下载后记得解压在使用

2. 文字转语音

        2.1 Maven导入以下包

  1. <!-- 文字转语音 -->
  2. <dependency>
  3. <groupId>com.hynnet</groupId>
  4. <artifactId>jacob</artifactId>
  5. <version>1.18</version>
  6. </dependency>

        2.2 编写代码

  1. import com.jacob.activeX.ActiveXComponent;
  2. import com.jacob.com.Dispatch;
  3. import com.jacob.com.Variant;
  4. public class TxtToSoundUtils {
  5. public static void main(String[] args) {
  6. textToSpeech("打开卧室灯泡");
  7. System.out.println("生成成功!");
  8. }
  9. /**
  10. * 语音转文字并播放
  11. *
  12. * @param text
  13. */
  14. public static void textToSpeech(String text) {
  15. ActiveXComponent ax;
  16. try {
  17. ax = new ActiveXComponent("Sapi.SpVoice");
  18. // 运行时输出语音内容
  19. Dispatch spVoice = ax.getObject();
  20. // 音量 0-100
  21. ax.setProperty("Volume", new Variant(100));
  22. // 语音朗读速度 -10 到 +10
  23. ax.setProperty("Rate", new Variant(-2));
  24. // 执行朗读
  25. Dispatch.call(spVoice, "Speak", new Variant(text));
  26. // 下面是构建文件流把生成语音文件
  27. ax = new ActiveXComponent("Sapi.SpFileStream");
  28. Dispatch spFileStream = ax.getObject();
  29. ax = new ActiveXComponent("Sapi.SpAudioFormat");
  30. Dispatch spAudioFormat = ax.getObject();
  31. // 设置音频流格式
  32. Dispatch.put(spAudioFormat, "Type", new Variant(22));
  33. // 设置文件输出流格式
  34. Dispatch.putRef(spFileStream, "Format", spAudioFormat);
  35. // 调用输出 文件流打开方法,创建一个.wav文件
  36. Dispatch.call(spFileStream, "Open", new Variant("D:\\File\\TestFile.wav"), new Variant(3), new Variant(true));
  37. // 设置声音对象的音频输出流为输出文件对象
  38. Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream);
  39. // 设置音量 0到100
  40. Dispatch.put(spVoice, "Volume", new Variant(100));
  41. // 设置朗读速度
  42. Dispatch.put(spVoice, "Rate", new Variant(-2));
  43. // 开始朗读
  44. Dispatch.call(spVoice, "Speak", new Variant(text));
  45. // 关闭输出文件
  46. Dispatch.call(spFileStream, "Close");
  47. Dispatch.putRef(spVoice, "AudioOutputStream", null);
  48. spAudioFormat.safeRelease();
  49. spFileStream.safeRelease();
  50. spVoice.safeRelease();
  51. ax.safeRelease();
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. }
  55. }
  56. }

到此就完成了 语音转文字 文字转语音的功能了,希望能帮到你。有疑问评论

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/621758
推荐阅读
相关标签
  

闽ICP备14008679号