通过 Mac 自动的 say 命令学习粤语真的太好玩了 😏😏😏

macOS 自带的 say 命令是一个非常实用的文本转语音(Text-to-Speech)工具,它可以让你的 Mac 使用系统语音朗读指定的文字。这个命令行工具非常适合自动化脚本、提示系统、学习英语发音等场景。

首先我们先来执行一个最基本的语法,如下命令所示:

bash 复制代码
say "你好,我是靓仔"

这条命令会让 Mac 用默认语音朗读"你好,我是靓仔"。

我们可以使用 -v 指定语音:

bash 复制代码
say -v Samantha "Hello, how are you?"

使用 -v(voice)参数可以选择特定的语音(不同语音支持不同语言和口音)。

查看所有可用语音可以执行如下命令:

bash 复制代码
say -v "?"

如下输出结果所示:

-f 从文件中读取文本:

bash 复制代码
say -f moment.txt

-o 导出为音频文件(AIFF 格式)

bash 复制代码
say "你好,这是导出的语音" -o output.aiff

我们可以把朗读内容保存成一个音频文件(.aiff 是无损格式)。

通过 say 学习粤语

接下来我们将借助 ffmpeg 将输出的文件最终转换为 MP3 格式的。

js 复制代码
import { exec } from "child_process";
import { existsSync, unlinkSync } from "fs";

const text = "我陈浩南出嚟行靠三样嘢:够姜够雷够叠马";
const outputAiff = "output.aiff";
const outputMp3 = "output.mp3";

exec(`say -v "Sinji" -o ${outputAiff} "${text}"`, (err) => {
  if (err) {
    return;
  }

  console.log(`已生成 AIFF 语音文件:${outputAiff}`);

  // 转换为 MP3 格式
  if (!existsSync(outputAiff)) {
    console.error("未找到 AIFF 文件");
    return;
  }

  exec(`ffmpeg -y -i ${outputAiff} ${outputMp3}`, (err2) => {
    if (err2) {
      console.error("ffmpeg 转换失败:", err2);
    } else {
      console.log(`轉換完成:${outputMp3}`);
      unlinkSync(outputAiff);
    }
  });
});

这段代码的作用是用 macOS 的 say 命令将一段中文文本合成语音(AIFF 文件),再用 ffmpeg 转换成 MP3 格式,并删除中间的 AIFF 文件。

执行如下文件最终输出结果如下图所示:

总结

say 是 macOS 自带的文本转语音命令行工具,可以将文本朗读出来或导出为语音文件(如 .aiff)。它支持多种语音和语言,使用 -v 参数可指定发音人,-o 可导出音频。常用于自动化播报、语音提醒、配音等场景。

相关推荐
lyyyuna几秒前
一个 Ginkgo 集测优化案例
后端
加油乐3 分钟前
js及vue主题切换方案
前端·javascript·vue.js
帅夫帅夫7 分钟前
前端小白也能看懂的 Promise 原理与使用教程(附 async/await 升级指南)
前端
用户49810727802307 分钟前
浏览器原生支持的组件化方案?Web Components深度解毒指南
前端
每天都想睡觉的19007 分钟前
实现一个 React 版本的 Keep-Alive 组件,并支持 Tab 管理、缓存、关闭等功能
前端·react.js
甲丁9 分钟前
ServBay --- MAC下集成式运行环境,下一代开发环境管理工具
后端·全栈
轻语呢喃11 分钟前
前端路由:从传统页面跳转到单页应用(SPA)
前端·react.js·html
foxhuli22917 分钟前
echarts 绘制3D中国地图
前端
Code季风18 分钟前
测试驱动开发(TDD)实战:在 Spring 框架实现中践行 “红 - 绿 - 重构“ 循环
java·驱动开发·后端·spring·设计模式·springboot·tdd
KeyNG_Jykxg18 分钟前
🥳Elx开源升级:XMarkdown 组件加入、Storybook 预览体验升级
前端·vue.js·人工智能