質問編集履歴

2

ご指摘を受けてコードの追記

2020/12/03 21:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -206,6 +206,256 @@
206
206
 
207
207
 
208
208
 
209
+ ### voice_generatorのコード
210
+
211
+
212
+
213
+ ```
214
+
215
+ import subprocess
216
+
217
+ import re
218
+
219
+
220
+
221
+ # ************************************************
222
+
223
+ # remove_custom_emoji
224
+
225
+ # 絵文字IDは読み上げない
226
+
227
+ # ************************************************
228
+
229
+ def remove_custom_emoji(text):
230
+
231
+
232
+
233
+ #pattern = r'<:[a-zA-Z0-9_]+:[0-9]+>' # カスタム絵文字のパターン
234
+
235
+ pattern = r'<:' # カスタム絵文字のパターン
236
+
237
+ text = re.sub(pattern,'',text) # 置換処理
238
+
239
+ pattern = r':[0-9]+>' # カスタム絵文字のパターン
240
+
241
+ return re.sub(pattern,'',text) # 置換処理
242
+
243
+
244
+
245
+ # ************************************************
246
+
247
+ # url_shouryaku
248
+
249
+ # URLなら省略
250
+
251
+ # ************************************************
252
+
253
+ def url_shouryaku(text):
254
+
255
+ pattern = "https?://[\w/:%#$&?()~.=+\-]+"
256
+
257
+ return re.sub(pattern,'URLは省略するのデス!',text) # 置換処理
258
+
259
+
260
+
261
+ # ************************************************
262
+
263
+ # remove_picture
264
+
265
+ # 画像ファイルなら読み上げない
266
+
267
+ # ************************************************
268
+
269
+ def remove_picture(text):
270
+
271
+ pattern = r'.*(.jpg|.jpeg|.gif|.png|.bmp)'
272
+
273
+ return re.sub(pattern,'',text) # 置換処理
274
+
275
+
276
+
277
+ # ************************************************
278
+
279
+ # remove_command
280
+
281
+ # コマンドは読み上げない
282
+
283
+ # ************************************************
284
+
285
+ def remove_command(text):
286
+
287
+ pattern = r'^\!.*'
288
+
289
+ return re.sub(pattern,'',text) # 置換処理
290
+
291
+
292
+
293
+ # ************************************************
294
+
295
+ # remove_log
296
+
297
+ # 参加ログは読み上げない
298
+
299
+ # ************************************************
300
+
301
+ def remove_log(text):
302
+
303
+ pattern = r'(\【VC参加ログ\】.*)'
304
+
305
+ return re.sub(pattern,'',text) # 置換処理
306
+
307
+
308
+
309
+ # ************************************************
310
+
311
+ # user_custam
312
+
313
+ # ユーザ登録した文字を読み替える
314
+
315
+ # ************************************************
316
+
317
+ def user_custam(text):
318
+
319
+
320
+
321
+ f = open('C:/open_jtalk/bin/dic.txt', 'r')
322
+
323
+ line = f.readline()
324
+
325
+
326
+
327
+ while line:
328
+
329
+ pattern = line.strip().split(',')
330
+
331
+ if pattern[0] in text:
332
+
333
+ text = text.replace(pattern[0], pattern[1])
334
+
335
+ print('置換後のtext:'+text)
336
+
337
+ break
338
+
339
+ else:
340
+
341
+ line = f.readline()
342
+
343
+ f.close()
344
+
345
+
346
+
347
+ return text
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+ # ************************************************
356
+
357
+ # creat_WAV
358
+
359
+ # message.contentをテキストファイルと音声ファイルに書き込む
360
+
361
+ # 引数:inputText
362
+
363
+ # 書き込みファイル:input.txt、output.wav
364
+
365
+ # ************************************************
366
+
367
+ def creat_WAV(inputText):
368
+
369
+ # message.contentをテキストファイルに書き込み
370
+
371
+
372
+
373
+ inputText = remove_custom_emoji(inputText) # 絵文字IDは読み上げない
374
+
375
+ inputText = remove_command(inputText) # コマンドは読み上げない
376
+
377
+ inputText = url_shouryaku(inputText) # URLなら省略
378
+
379
+ inputText = remove_picture(inputText) # 画像なら読み上げない
380
+
381
+ inputText = remove_log(inputText) # 参加ログなら読み上げない
382
+
383
+ inputText = user_custam(inputText) # ユーザ登録した文字を読み替える
384
+
385
+ input_file = 'input.txt'
386
+
387
+
388
+
389
+ with open(input_file,'w',encoding='shift_jis') as file:
390
+
391
+ file.write(inputText)
392
+
393
+
394
+
395
+ command = 'C:/open_jtalk/bin/open_jtalk -x {x} -m {m} -r {r} -ow {ow} {input_file}'
396
+
397
+
398
+
399
+ #辞書のPath
400
+
401
+ x = 'C:/open_jtalk/bin/dic'
402
+
403
+
404
+
405
+ #ボイスファイルのPath
406
+
407
+ #m = 'C:/open_jtalk/bin/nitech_jp_atr503_m001.htsvoice'
408
+
409
+ #m = 'C:/open_jtalk/bin/mei/mei_sad.htsvoice'
410
+
411
+ #m = 'C:/open_jtalk/bin/mei/mei_angry.htsvoice'
412
+
413
+ m = 'C:/open_jtalk/bin/mei/mei_bashful.htsvoice'
414
+
415
+ #m = 'C:/open_jtalk/bin/mei/mei_happy.htsvoice'
416
+
417
+ #m = 'C:/open_jtalk/bin/mei/mei_normal.htsvoice'
418
+
419
+
420
+
421
+ #発声のスピード
422
+
423
+ #r = '2.0'
424
+
425
+ r = '1.2'
426
+
427
+
428
+
429
+ #出力ファイル名 and Path
430
+
431
+ ow = 'output.wav'
432
+
433
+
434
+
435
+ args= {'x':x, 'm':m, 'r':r, 'ow':ow, 'input_file':input_file}
436
+
437
+
438
+
439
+ cmd= command.format(**args)
440
+
441
+ print(cmd)
442
+
443
+
444
+
445
+ subprocess.run(cmd)
446
+
447
+ return True
448
+
449
+
450
+
451
+ if __name__ == '__main__':
452
+
453
+ creat_WAV('テスト')
454
+
455
+ ```
456
+
457
+
458
+
209
459
  ### 補足情報(FW/ツールのバージョンなど)
210
460
 
211
461
 

1

誤字修正

2020/12/03 21:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
 
4
4
 
5
- ここに質問の内容を詳しく書いてください。
6
-
7
5
  discord.pyで単語登録機能などを備えた簡易的な読み上げBotを作成しています
8
6
 
9
7
  単語登録機能を実装中に以下のエラーメッセージが発生しました。
@@ -215,3 +213,7 @@
215
213
  PythonバージョンはPython 3.9.0です
216
214
 
217
215
  Open JTalkで読み上げさせています。
216
+
217
+ また、辞書登録をせずに辞書登録先テキストファイルを削除すれば
218
+
219
+ 読み上げは正常に動作します