@minto-ai/huoshan-tts
Version:
借助“火山引擎在线语音合成API”实现浏览器端“文本转语音
57 lines (52 loc) • 1.59 kB
text/typescript
import type { BusinessParams } from './types'
import { isIos } from '@minto-ai/tools'
import TtsController from './tts-controller'
import 'core-js'
function requestAudioPermission(): Promise<MediaStream> {
return new Promise((resolve, reject) => {
navigator.mediaDevices
.getUserMedia({ audio: true })
.then((stream) => {
resolve(stream)
})
.catch((error) => {
if (error.name === 'NotAllowedError') {
reject(new Error('用户拒绝了音频权限请求'))
}
else if (error.name === 'NotFoundError') {
reject(new Error('设备上没有可用的音频输入设备'))
}
else {
reject(new Error(`音频权限请求失败: ${error.message}`))
}
})
})
}
/**
* 用于管理文本转语音的配置和创建实例
*/
export default {
/**
* 配置系统参数。
* @returns {object} 返回当前对象,支持链式调用。
*/
config() {
/**
* @iss IOS浏览器无法文字转语音,需要申请权限
*/
if (isIos()) {
requestAudioPermission().catch((error) => {
throw new Error(error.message)
})
}
return this
},
/**
* 创建文本转语音控制器实例。
* @param {Partial<BusinessParams>} [businessParams] - 业务参数,默认为空对象。
* @returns {TtsController} 返回TtsController实例。
*/
create(businessParams: Partial<BusinessParams> = {}): TtsController {
return new TtsController(businessParams)
},
}