※2023年1月28日追記:解決済み
※親切な方がコメントで教えてくれました!ありがとーありがとー
await genAudio(message.content, “text.wav”);
ここでwavファイルの作成には成功してるんだけど
await player.play(resource);
ここで音が鳴らないのはなんでだろうと悩んでいます。
discord.js詳しい人たすけてー!
const { default: axios } = require("axios");
const fs = require("fs");
const rpc = axios.create({ baseURL: "http://127.0.0.1:50021", proxy: false });
async function genAudio(text, filepath) {
text = encodeURI(text)
//http://127.0.0.1:50021/speakers
const speaker = 8 //8は春日部つむぎのノーマル
const audio_query = await rpc.post(`audio_query?text=${text}&speaker=${speaker}`);
const synthesis = await rpc.post(`synthesis?speaker=${speaker}`, JSON.stringify(audio_query.data), {
responseType: 'arraybuffer',
headers: {
"accept": "audio/wav",
"Content-Type": "application/json"
}
});
await fs.writeFileSync(filepath, new Buffer.from(synthesis.data), 'binary');
}
const { Client, Intents } = require('discord.js');
const client = new Client({intents: [Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_VOICE_STATES]});
const { joinVoiceChannel, createAudioResource, createAudioPlayer } = require('@discordjs/voice');
client.on('ready', () => {
console.log(`${client.user.username}がログインしました。`);
});
client.on('messageCreate', async message => {
if (message.author.bot) {
return
}
if (message.content === 'つむぎちゃんおいで') {
if (message.member.voice.channelId != null) {
joinVoiceChannel({
channelId: message.member.voice.channel.id,
guildId: message.guild.id,
adapterCreator: message.guild.voiceAdapterCreator
})
await message.channel.send('はーい');
} else {
await message.channel.send('ボイスチャンネルに入ってから呼んでね!');
}
return;
}
if (client.voice.adapters != null) {
console.log(`通ってる1`);
// discordのメッセージからwavを生成
await genAudio(message.content, "text.wav");
console.log(`通ってる2`);
const resource = createAudioResource("text.wav");
console.log(`通ってる3`);
const player = createAudioPlayer();
console.log(`通ってる4`);
await player.play(resource);
console.log(`通ってる5`);
}
})
client.login('token');
const connection = joinVoiceChannel({
channelId: message.member.voice.channel.id,
guildId: message.guild.id,
adapterCreator: message.guild.voiceAdapterCreator
})
にし
player.subscribe(connection)
にしてみてください。
多分これだけでは解決しないと思うので、最初にplayerを宣言してからのほうがいいかもしれません。
おおーコメントありがとうございます!
なるほどー